Sql 特定组的LINQ查询
我有一个如下所示的数据列表Sql 特定组的LINQ查询,sql,linq,Sql,Linq,我有一个如下所示的数据列表 GroupId Color --------- 1 Blue 1 Red 2 Green 2 Blue 3 White 3 Red 3 Yellow 4 Blue 4 Red 我正在尝试编写一个LINQ查询,该查询可用于筛选此集合,以便它能够提供以下问题的答案 给我颜色为蓝色和红色的组。 此问题的答案将是组Id为1和4的列表 即使答案中有
GroupId Color
---------
1 Blue
1 Red
2 Green
2 Blue
3 White
3 Red
3 Yellow
4 Blue
4 Red
我正在尝试编写一个LINQ查询,该查询可用于筛选此集合,以便它能够提供以下问题的答案
给我颜色为蓝色和红色的组。
此问题的答案将是组Id为1和4的列表
即使答案中有蓝色,也不会包含2。比赛必须精确到蓝色和红色
var result = list.GroupBy(item => item.GroupdId)
.Where(x=>x.All(y=>y.Color=="Blue" || y.Color=="Red")).Select(x=>x.Key).ToList();
这将返回您想要的答案
首先按groupid对项目进行分组,然后查找仅包含“蓝色”或“红色”的所有组,然后在列表中返回组id。以下是通用解决方案
var checkColors = new[] { "Blue", "Red" };
var gp = from d in definitions
group d by d.GroupId
into g
let colorNames = g.Select(dim => dim.Color)
where g.Any(gd => !checkColors.Except(colorNames).Any())
select g.Key;
你能发布你到目前为止尝试过的东西吗?如果gorup有一种除了蓝色或红色以外的其他颜色,这将失败