C# 中的 SelectMany
是一个 LINQ 方法,它主要用于将多个集合或可迭代对象中的元素合并到一个序列中。这个方法可以解决以下几种难题:
- 扁平化嵌套集合:当你有一个嵌套的集合结构时,例如一个集合的每个元素都是一个集合,你可以使用
SelectMany
将这些嵌套集合扁平化为一个单一的集合。
ListnestedList = new List > { new List
{ 1, 2, 3 }, new List { 4, 5, 6 }, new List { 7, 8, 9 } }; List flattenedList = nestedList.SelectMany(innerList => innerList).ToList();
- 将多个查询结果合并为一个:当你需要执行多个查询并将它们的结果合并为一个结果集时,可以使用
SelectMany
。
var query1 = from item in collection1 select item; var query2 = from item in collection2 select item; var combinedResults = query1.SelectMany(item => query2.Where(innerItem => innerItem == item));
- 在流式处理中展平数据:当你需要在流式处理过程中展平数据时,例如从数据库查询中获取的数据,可以使用
SelectMany
。
var query = from item in databaseContext.Items select new { Item = item, Category = item.Category }; var flattenedResults = query.SelectMany(x => x.Category.Items).ToList();
总之,SelectMany
是一个非常有用的方法,可以帮助你处理嵌套集合、合并多个查询结果以及在流式处理过程中展平数据。