[英]Using LINQ Lambda expression determining value by group by and where condition
所以我有以下数据表:
Region Class
Reg100 A
Reg100 B
Reg200 A
Reg300 B
我想确定一个有两个类 A 和 B 的区域。在这种情况下,它将是 Reg100。 我怎么能用 lambda 表达式写这个?
我尝试过类似下面的东西,但没有得到我想要的。
dt.Where(x => x.Class.Contains(listOfAandB).GroupBy(x=>x.Region).FirstOrDefault()
让我们定义输入:
class Data
{
public string Region;
public string Class;
}
var dt = new[]
{
new Data { Region = "Reg100", Class = "A" },
new Data { Region = "Reg100", Class = "B" },
new Data { Region = "Reg200", Class = "A" },
new Data { Region = "Reg300", Class = "B" },
};
现在,使用GroupBy
我们可以按区域对输入进行分组。
dt.GroupBy(x => x.Region)
这产生 { Reg100 (A, B), Reg200 A, Reg 300 B }。 现在我们看看是否能同时找到 A 和 B:
dt.GroupBy(x => x.Region)
.Where(g => g.Any(x => x.Class == "A") && g.Any(x => x.Class == "B"))
最后,因为我们只对该地区感兴趣,所以我们向它投射:
dt.GroupBy(x => x.Region)
.Where(g => g.Any(x => x.Class == "A") && g.Any(x => x.Class == "B"))
.Select(g => g.Key);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.