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