Linq语言查询,部分关键字使用:
a) Distinct,值类型可以直接筛除,对于引用类型需要实现接口IEqualityComparer<T>。
b) Select、SelectMany,SelectMany返回的委托是IEnumerable<T>。而Select返回委托是IEnumerable<IEnumerable<T>>。
c) Where查询条件,进行筛选。
d) ToDictionary、ToArray()、ToList(),转换成对应类型。
e) First、FirstOrDefault、Last、LastOrDefault、Find、FindOrDefault。其中如果First、Last、根据查询条件没有找出来具体数据的话则会抛出异常,而对于FirstOrDefault、LastOrDefault则不会抛出异常。
f) OrderBy、OrderByDescending、ThenOrderBy、ThenOrderByDescending。主要是做排序使用,可以多次连接进行排序,例如:OrderBy(p => p.id). OrderByDescending(p => p.name);
g) list.GroupBy(a => new { a.Name, a.ID }).Select(p => new { p.Key.ID, p.Key.Name, count = p.Sum(a => a.ModifyBy) }) 。关于GroupBy使用可以在进行Select或者是其他操作。
h) list.take(5),取前N条数据,如果列表当中没有指定数量的数据,那么有多少数据就取多少数据。
对于引用类型Distinct筛选实现:
where T : class
{
private string Fileds { get ; set ; }
public EqualityComparer( string fileds)
{
Fileds = fileds;
}
public bool Equals(T x, T y)
{
return GetHashCode(x) == GetHashCode(y);
}
public int GetHashCode(T obj)
{
try
{
return Convert.ToInt32( typeof (T).GetProperty(Fileds).GetValue(obj, null ));
}
catch
{
throw new NotImplementedException();
}
}
}