两个LINQ查询返回不同的数据类型

时间:2016-07-17 18:52:57

标签: c# .net linq

今天我迫切需要你的帮助。我有两个名为setup和channels的表,它们具有多对一的关系。许多频道属于一个设置。在任何给定时间只有一个设置处于活动状态。我正在尝试查询我的数据库并仅获取属于活动设置的通道。我的查询有效,但在需要列表时返回IEnumerable。然而,我使用类似的查询来获取所有通道,并返回一个列表。我该怎么做才能获得一份清单?

此查询返回一个像我期望的List:

var q = (from a in DTE.channels
                     select a).ToList();
this.myChannels = new ObservableCollection<channel>(q);

此查询提供了我想要的过滤数据,即使我调用ToList(),也会返回IEnumerable,而我的ObservableCollection不喜欢IEnumerables:

var f = (DTE.setups.Where(m => m.CurrentSetup == true).Select(m => m.channels)).ToList();
this.myChannels = new ObservableCollection<channel>(f);

非常非常感谢任何帮助。谢谢你,祝你有美好的一天。

1 个答案:

答案 0 :(得分:2)

将评论作为答案发布,因为它有帮助。 你的问题是你有多对多的关系,所以你的.Select(m => m.channels)实际上不返回List<channel>,而是列表 - List<List<channel>>,因为每条记录都有自己的列表,它只返回这些列表

您只需使用.SelectMany(m => m.channels).ToList()代替.SelectSelectMany将获得返回的列表,并将它们合并到一个包含所有数据的列表中。因此,您可以根据需要List<channel>