簡體   English   中英

如何在 Linq 中使用不同的計數?

[英]How can i use distinct with count in Linq?

在此處輸入圖像描述

下面的擴展方法沒有DistinctCount

public static IEnumerable<Something> ToFilterModel(this IEnumerable<Product> products)
{
    var v = products
        .SelectMany(x => x.ProductVariants)
        .GroupBy(x => x.OptionId)
        .Select(x => new
        {
            Id = x.Key.ToString(),
            Items = x.Select(x => new Item { Id = x.ValueId, Text = x.Value.OptionValue })
        });
    return v;
}

鑒於下面的輸入,它應該返回 2 個Items行而不是 3 個,因為我對ValueIds和按ValueIds Count感興趣

在此處輸入圖像描述

我應該如何修改它?

更特別的是,它應該返回第 1 行和第 2 行的項目,以及

第一行的計數等於 1,第二行的計數等於 2。

您可以按ValueId對分組選項進行分組,例如:

Items = x
    .GroupBy(y => y.ValueId)
    .Select(z => new Item { Id = z.Key, Text = z.First().Value.OptionValue, Count = z.Count() })

結果將是:

{
   "Id":1,
   "Items":[
      {
         "Id":1,
         "Text":"text1",
         "Count":1
      },
      {
         "Id":2,
         "Text":"text2",
         "Count":2
      }
   ]
}

注意: Text是分組值 id 的計數。

整個代碼:

var v = products
        .SelectMany(x => x.ProductVariants)
        .GroupBy(x => x.OptionId)
        .Select(x => new
        {
            Id = x.Key.ToString(),
            Items = x
                .GroupBy(y => y.ValueId)
                .Select(z => new Item { Id = z.Key, Text = z.First().Value.OptionValue, Count = z.Count() })
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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