汇总C# .NET工作中遇到的一些方法的使用 ~
一、Distinct用法
今天遇到Ticket System模块的Attribute属性列表相同属性值显示重复的问题,涉及到Distinct用法。
c#中的Distinct大多用于对数组去重,一般数组为基础的数据类型,例如 int,string. –> .Distinct().ToList()
也可以用于对象去重。
Distinct方法不加参数的话,去重的规则是比较对象集合中对象的引用是否相同,如果相同,则去重,否则不去重。
问题涉及一个AttributeFilter对象:
1 | public class AttributeFilter |
AttributeFilter对象里的Property和Value都不相同的对象,我们才算做不重复的对象,要输出集合中不重复的对象,这时,我们需要用到了Distinct的第二个方法,方法要求传入的参数是IEqualityComparer类型,继承一个泛型接口,继承IEqualityComparer接口必须实现Equals和GetHashCode方法:
1 | public class AttributeComparer : IEqualityComparer<AttributeFilter> |
在使用这个参数过滤:
1 | AttributeFilters.Distinct(new AttributeComparer()).ToList(); |
Result:
二、CORS跨域
YTWO App调用web后端API存在的跨域问题:
采用:webapi使用System.Web.Http.Cors配置跨域访问
在webapi中使用System.Web.Http.Cors配置跨域信息可以有两种方式。
1) 一种是在App_Start.WebApiConfig.cs的Register中配置如下代码,这种方式将在所有的webapi Controller里面起作用。
eg:
1 | using System; |
配置文件如下,注意一定要加上http
1 | <add key="origins" value="http://localhost:9012,http://192.168.1.108:9012" /> |
2) 第二种方式就是在每个webapiController类中设置,即每个控制器个性化配置。
eg:
1 | using System; |