c# - 使用 linq 将列表列表转换为单个列表

标签 c# linq

<分区>

我是一个包含相同类型对象的列表列表,我正在尝试使用 linq 将其转换为包含所有对象的单个列表。

我该怎么做?

这是我当前的代码:

  var allTrackAreas =
            _routables.Select(
                routable =>
                    _centrifugeHelper.GetTrackAreasFromRoutable(routable, _trackAreaCutterParameters,
                        _allowedDestination.MatchedAreas[routable]))
                .Where(area => area != null).ToList();

        foreach (var testAction in _trackAreaCutterParameters.ConcurrentBagTestActions)
        {
            if (allTrackAreas.Any(areas => areas.Any(area => area.Id == testAction.TrackAreaId)))
            {
                currentActions.Add(testAction);
            }
        }

变量 allTrackAreas 是一个列表列表,我在上面使用了两次 Any,这对效率来说非常糟糕。如果是简单的列表就更好了。

最佳答案

你可以这样做:

var allTrackAreasCombined = allTrackAreas.SelectMany(t => t).ToList();

关于c# - 使用 linq 将列表列表转换为单个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133569/

相关文章:

c# - 根据另一个列表排序和合并列表

c# - ScrollViewer 不使用 UWP Windows 10 Phone 滚动

c# - C#接口(interface)方法的默认实现?

c# - 比较linq中的日期

c# - SequenceEqual 的 IEqualityComparer

LINQ - 将 List<string> 转换为 Dictionary<string,string>

c# - ASP.NET MVC 4 - 无法对空引用执行运行时绑定(bind)

c#检查2个字符串是否包含相同的字符

c# - 执行阅读器 : Connection property has not been initialized

c# - 选择整个第一个表,并用连接表覆盖一列