0

アイテムのリストを取得しました。列の個別の値に基づいて (つまり、レベルに基づいて) リストをフィルター処理したいのですが、フィルター処理後にカウントを取得して int 変数として保存する必要があります。誰でも私を助けてください。

**List**

   Public Class Totalitems
    {
     public string ItemName;
     public string ItemId;
     public string ItemGroup;
     public int Level;
    } 

    Id= "123asd";

    List<Totalitems> l_items = this.getslist(Id);

       /*How to filter based on distinct level */

      /*  var filteredItems = (
            from p in l_items 
           select p.Level)
            .Distinct();  */                       

    **Finally:**
        //Stores the elements contained in the List into a variable
        int totalItemsafterFiltering = l_FilteredItems.Count;            
4

1 に答える 1

2

GroupByこのタスクに使用したいもの:

var numberOfDifferentLevels = l_items.GroupBy(x => x.Level).Count();

GroupByグループ内の実際の要素で何かをしたい場合は、特に便利です。たとえば、レベルごとにいくつのアイテムがあるかを知りたい場合があります。

var itemsPerLevel = l_items.GroupBy(x => x.Level)
                           .Select(x => new { Level = x.Key,
                                              NumberOfItems = x.Count() });

個別のレベルの数だけを本当に気にする場合の別のアプローチは、次のとおりです。

var numberOfDifferentLevels = l_items.Select(x => x.Level).Distinct().Count();
于 2013-02-05T12:18:42.667 に答える