如何在C#中将Linq Select Enumerable转换为首选类型?

时间:2015-12-30 06:36:30

标签: c# linq select casting

我有一个ObservableCollectionMobileList类型MobileModel。 MobileModel的列表为MobileModelInfo

我只需要来自MobileModelInfo的{​​{1}}。所以我在方法MobileList中使用了Linq Select语句。但是我无法分配列表,它显示错误。

我的C#源代码:

ExtractFirstMobileList()

请帮助我如何将Enumerable转换为首选类型。

3 个答案:

答案 0 :(得分:5)

如果您想创建包含所有不同MobileModelInfo的展平列表,可以使用SelectMany

List<MobileModelInfo> mInfo = Source.SelectMany(t => t.Model).ToList();

但是你的方法被称为ExtractFirstMobileList,这表明你想要每个子列表中的第一个项目 - 在这种情况下你可以使用:

List<MobileModelInfo> mInfo = Source.Select(t => t.Model.First()).ToList();

希望这有帮助

答案 1 :(得分:3)

MobileModel类的Model属性本身就是一个列表。因此,您使用的select查询将返回MobileModelInfo集合的集合(返回类型IEnumerable&lt; List&lt; MobileModelInfo&gt;&gt;)

将其转换为List&lt; List&lt; MobileModelInfo&gt;&gt;最后添加.ToList()。

List<List<MobileModelInfo>> mInfo = Source.Select(t => t.Model).ToList();

答案 2 :(得分:1)

如果您需要在LINQ方法之后使用ToList()使用Select()方法对列表进行极值反应。还要确保您的列表不为空,它存在且包含多于0个元素