我是具有相同类型对象的列表列表,我正在尝试使用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,这对效率来说非常糟糕。如果它是一个简单的列表会好得多。
答案 0 :(得分:13)
你可以这样做:
var allTrackAreasCombined = allTrackAreas.SelectMany(t => t).ToList();
答案 1 :(得分:0)
如果你有这样的清单
list[0]
Records1[0]
Records2[1]
Records3[2]
list[1]
Records1[0]
Records2[1]
Records3[2]
所以你可以像使用这段代码一样在单个列表中创建所有记录
list<object> test = new list<object>();
foreach(object items in list)
{
foreach(object item in items)
{
test.add(item);
}
}
然后在测试中你得到了所有六个记录。
我希望这对你有所帮助。