今天我迫切需要你的帮助。我有两个名为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);
非常非常感谢任何帮助。谢谢你,祝你有美好的一天。
答案 0 :(得分:2)
将评论作为答案发布,因为它有帮助。
你的问题是你有多对多的关系,所以你的.Select(m => m.channels)
实际上不返回List<channel>
,而是列表 - List<List<channel>>
,因为每条记录都有自己的列表,它只返回这些列表
您只需使用.SelectMany(m => m.channels).ToList()
代替.Select
,SelectMany
将获得返回的列表,并将它们合并到一个包含所有数据的列表中。因此,您可以根据需要List<channel>
。