[英]use linq to group by and then run select query with where condition
我有一個類,如下所示的OrderInfo,
class OrderInfo
{
string Product
boolean NoIssues
}
我有一個OrderInfo列表。 我想做的是了解每種產品是否存在問題。 因此,以下是我的列表示例。
ProductList
Product NoIssues
ABC true
ABC true
ABC false
ABC true
EFG true
EFG true
EFG true
EFG true
EFG true
以下是我想要的結果。
Result
ABC false
EFG true
因此,我將使用LINQ按產品分組以獲取唯一的產品列表,然后遍歷該列表以運行選擇查詢,在該查詢中我根據NoIssues = false進行過濾。 但是不確定如何執行此操作,或者這是否是最佳方法
var res = (from ord in ProductList
group ord by ord.Product).ToList()
因此,我相信上面的代碼將為我提供一個可以循環瀏覽的獨特產品列表。 但是不知道如果我在條件不返回任何內容的情況下使用select語句會發生什么情況?
您可以使用全部 :
List<OrderInfo> result = list.GroupBy(x => x.Product)
.Select(x => new OrderInfo
{
Product = x.Key,
NoIssues = x.All(z => z.NoIssues)
}).ToList();
或者,如果您更喜歡查詢語法:
List<OrderInfo> result = (from ord in ProductList
group ord by ord.Product into g
select new OrderInfo
{
Product = g.Key,
NoIssues = g.All(x => x.NoIssues)
}).ToList();
如果您不想為此創建新的Product對象,則可以使用:
var result = from product in ProductList
group product by product.Product into productGroup
select productGroup.Where(p => !p.NoIssues)
.DefaultIfEmpty(productGroup.First())
.First();
否則,@ Rahul Singh的答案會更直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.