C# Linq如何合并多个列表?

3
var results = from thing in AnArrayOfThings
              let list = Function(thing)
              ???
              select OneLongResultsList;

如何将所有“list”集合合并为一个长列表?我对linq不熟悉,不能使用lambda表达式。

基本上,我想做的是这样的:

List<Result> results = new ...;
foreach (Thing t in ListOfThings)
{
    List<Result> list = Function( t );
    results.MergeOrAdd( list );
}

两个列表是相同类型的吗?试一些教程。Concat,Union是其中一些方法。https://dev59.com/bnRB5IYBdhLWcg3wF0HH - undefined
将两个(或更多)列表合并为一个,在C# .NET中。 - undefined
是的,它们是相同类型的。Concat函数适用于两个列表,但我不知道如何在多个列表中使用,比如在foreach循环中。 - user4214969
1个回答

4
也许您只需要使用SelectMany
var results = AnArrayOfThings.SelectMany(x => Function(x));

或者使用查询语法:

var results = from thing in AnArrayOfThings
              from thingInAList in Function(thing)
              select thingInAList;

哦,这样会获取所有列表中的“thingInAList”... 所有的东西吗? - user4214969
@Herpn'nFoDerp 是的,它就像一个 flatMap 函数。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接