[英]linq count group only if all items in group are 'true'
給定下面的示例數據,我需要一個linq查詢,該查詢返回所有3個倉庫中庫存物品的數量。 在下面的示例中,它應該返回2
,因為在所有3個倉庫中只有skus ABC-123
和JKL-789
是ins庫存。 但是我的查詢返回3?
WarehouseId Sku InStock
===================================
1 ABC-123 true
2 ABC-123 true
3 ABC-123 true
1 XYZ-789 true
2 XYZ-789 false
3 XYZ-789 true
1 JKL-456 true
2 JKL-456 true
3 JKL-456 true
int inStock = query.Where(x => x.InStock).GroupBy(x => x.Sku).Count();
您的查詢返回3,因為您的Count()
是不受限制的,這意味着它對所有組進行計數,而不僅僅是對所有庫存中存在的組進行計數。
通過調用All(item => item.InStock)
添加條件以僅計算所需的項目:
var inStock = query
.GroupBy(x => x.Sku)
.Count(g => g.All(item => item.InStock));
請注意,現在Where
去了,以便所有項目都包含在組中。
int inStock = query
.Where(x => x.InStock)
.GroupBy(x => x.Sku)
.Where(g=>g.Count() == 3)
.Count();
盡管dasblinkenlight解決方案更好,因為它包括添加新倉庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.