这不是一个复杂的问题,但我无法在linq中绕过它.
我有一个Enumerable<T>包含Enumerable<string>:
public class
{
List<List<string>> ListOfLists = new List<List<string>>();
}
Run Code Online (Sandbox Code Playgroud)
我基本上想从ListOfLists返回每个唯一的字符串; 使用foreach循环和存储变量很容易(我可能会提高在最后没有明显的效率,但这不是重点):
List<string> result = new List<string>();
foreach (var v in ListOfLists)
{
foreach (var s in v)
{
result.Add(s);
}
}
result.Distinct();
Run Code Online (Sandbox Code Playgroud)
我如何使用linq执行此操作?
cor*_*erm 11
var distinctStrings = ListOfLists.SelectMany(list => list).Distinct();
Run Code Online (Sandbox Code Playgroud)
为了完整性,查询表达式语法有时比正确的调用更容易(我发现)SelectMany.这将是:
result = (from list in ListOfLists
from s in list
select s).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)