C# 使用LINQ Lambda表达式按group by和where条件确定值
因此,我有以下数据表:C# 使用LINQ Lambda表达式按group by和where条件确定值,c#,linq,lambda,C#,Linq,Lambda,因此,我有以下数据表: 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
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),reg200a,reg300b}。现在我们看看是否能同时找到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);
让我们定义输入:
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),reg200a,reg300b}。现在我们看看是否能同时找到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);