Union A List of Lists Using Linq
本文关键字:Using Linq Lists of List Union | 更新日期: 2023-09-27 18:07:42
这不是一个复杂的问题,但我无法用linq来理解它。
我有一个包含Enumerable<string>
:的Enumerable<T>
public class
{
List<List<string>> ListOfLists = new List<List<string>>();
}
我基本上想从ListOfLists返回每个唯一的字符串;这很容易使用foreach循环和存储变量(我可能会提高在最后不使用distinct的效率,但这不是重点(:
List<string> result = new List<string>();
foreach (var v in ListOfLists)
{
foreach (var s in v)
{
result.Add(s);
}
}
result.Distinct();
我该如何处理linq?
使用SelectMany
。看见http://msdn.microsoft.com/en-us/library/bb534336.aspx
var distinctStrings = ListOfLists.SelectMany(list => list).Distinct();
为了完整性,查询表达式语法有时比SelectMany
的正确调用更容易(我发现(。它应该是:
result = (from list in ListOfLists
from s in list
select s).Distinct().ToList();
var result = ListOfLists.SelectMany(v => v).ToList().Distinct();
编辑:为了获得更好的性能,请使用:
var result = ListOfLists.SelectMany(v => v).Distinct();
或
var result = ListOfLists.SelectMany(v => v).Distinct().ToList();