Linq查询列表中的列表并排除子列表数据

时间:2014-01-17 09:45:09

标签: c#-4.0

我有一个电话组列表中的电话对象列表。手机上有一个属性“is4GCompatible”。

我想查询电话组,并告诉我所有包含4GComptible电话的电话组。 linq查询在某种程度上有效,但它也包括不兼容的手机,而不是我正在寻找的手机。

代码的实例:http://rextester.com/OKB8502

请指教?

2 个答案:

答案 0 :(得分:0)

猜测一下,您想要使用包含4GComptible手机的群组。使用Where + Any

var all4GComptible = phoneGroups.Where(pg => pg.Any(p => p.is4GCompatible));

答案 1 :(得分:0)

您的示例代码中包含此内容,以获取包含4G兼容手机的群组:

phonegroups.Where(p => p.phones.Any(x => x.is4GCompatible == true)).ToList();

如果您要排除不兼容4G的手机,您需要构建仅包含4G兼容手机的新群组:

        phonegroups.Where(pg => pg.phones.Any(p => p.is4GCompatible))
                   .Select(pg => new phonegroup
                       {
                         groupName = pg.groupName,
                         phones = pg.phones.Where(p => p.is4GCompatible).ToList()
                       })
                   .ToList();