优秀的编程知识分享平台

网站首页 > 技术文章 正文

LINQ链式调用语法(三)(什么是调用链)

nanyue 2024-08-09 07:08:15 技术文章 27 ℃

LINQ链式调用常用语法外,还有一些其他的方法和操作符可以使用。

分组(Grouping)的高级用法:

除了使用GroupBy方法外,还可以使用ThenByThenByDescending对分组后的结果进行二次排序。

var groupedItems = source.GroupBy(item => item.Category)  
                         .OrderBy(group => group.Key)  
                         .ThenBy(group => group.Average(item => item.Value));

元素查找(Element Lookup):

使用FirstOrDefault、SingleOrDefault、LastOrDefault等方法在集合中查找元素,并返回第一个、唯一一个或最后一个满足条件的元素,如果没有找到则返回默认值。

var firstOrDefaultItem = source.FirstOrDefault(item => item.SomeProperty == someValue);  
var singleOrDefaultItem = source.SingleOrDefault(item => item.SomeProperty == someValue);  
var lastOrDefaultItem = source.LastOrDefault(item => item.SomeProperty == someValue);

聚合函数(Aggregation Functions):

除了Count、Sum、Average、Min、Max等聚合函数外,还可以使用Aggregate方法进行更复杂的聚合操作。

var total = source.Aggregate(0, (accumulator, item) => accumulator + item.Value);

集合操作(Set Operations):

使用Distinct、Union、Intersect、Except等方法进行集合操作,如去重、求并集、交集、差集等。

var distinctItems = source.Distinct();  
var unionItems = collection1.Union(collection2);  
var intersectItems = collection1.Intersect(collection2);  
var exceptItems = collection1.Except(collection2);

转换(Conversions):

使用ToArray、ToList、ToDictionary等方法将IEnumerable<T>转换为其他集合类型。

var array = source.ToArray();  
var list = source.ToList();  
var dictionary = source.ToDictionary(item => item.Key, item => item.Value);

索引和范围(Indexing and Ranging):

使用Range方法生成一个数字序列,以及ElementAtElementAtOrDefault方法通过索引访问元素。

var numbers = Enumerable.Range(1, 10); // 生成1到10的数字序列  
var element = source.ElementAt(index); // 通过索引访问元素

生成序列(Generating Sequences):

使用Repeat、Empty、Range等方法生成特定的序列。

var repeatedItem = Enumerable.Repeat(item, count); // 重复生成指定元素  
var emptySequence = Enumerable.Empty<T>(); // 生成空序列

自定义比较器(Custom Comparers):

在排序和分组操作中,可以使用自定义的比较器来定义排序和分组逻辑

var sortedItems = source.OrderBy(item => item.SomeProperty, new CustomComparer());

Tags:

最近发表
标签列表