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);