簡體   English   中英

使用 LINQ Lambda 表達式按 group by 和 where 條件確定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM