Linq查询的基本用法和介绍(m为集合中每个元素的别名)
Linq的Lambda表达式(因为委托是一个参数,所以可以直接m=>,而不需要(m)=>,m的类型是委托默认预定好的)
Linq扩展方法的写法,即传方法
Linq联合查询即扩展方法
返回的是一个new出来的新元素的集合,元素的字段名随意定义
排序orederby descending
Join on做联合(On后面跟连接条件,Equals判断是否和后面的字段相等)
对结果进行分组操作(into groups groups表示一组,不是一个集合),直接into分组得到的信息更全面
量词操作符any all
any判断是否至少有一个满足
all判断是否都满足
去重方法扩展
public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
var query = people.DistinctBy(p => new { p.Id, p.Name });
var query = people.DistinctBy(p => p.Id);
方法二
List<Person> distinctPeople = allPeople
.GroupBy(p => new {p.Id, p.Name} )
.Select(g => g.First())
.ToList();