繁体   English   中英

联盟使用Linq列表

[英]Union A List of Lists Using Linq

这不是一个复杂的问题,但我无法在linq中绕过它。

我有一个包含Enumerable<string>Enumerable<T> Enumerable<string>

public class
{
   List<List<string>> ListOfLists = new List<List<string>>();
}

我基本上想从ListOfLists返回每个唯一的字符串; 使用foreach循环和存储变量很容易(我可能会提高在最后没有明显的效率,但这不是重点):

List<string> result = new List<string>();

foreach (var v in ListOfLists)
{
   foreach (var s in v)
   {
      result.Add(s);
   }
}

result.Distinct();

我如何使用linq执行此操作?

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM