0

オブジェクトのコレクション/List<> がある場合、そのコレクション/List<> から個別のレコードをどのように選択しますか?

たとえば、私は次のことを行っていますが、両方で同じカウントを取得しています:

 var list = List<Order>;
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Processing" });

 var = completed = list.Select(x => x.Status == "Completed").Count();
 var = Processing = list.Select(x => x.Status == "Processing").Count();

ありがとう

4

2 に答える 2

2

さて、2つの問題と1つの単純化があります:

  • =変数宣言には、 betweenvarと変数名を含めないでください
  • フィルタリングには、Where代わりにを使用する必要がありますCount
  • Countそもそも述語をとるオーバーロードを使用する方が簡単でしょう...

それで:

var completed = list.Count(x => x.Status == "Completed");
var processing = list.Count(x => x.Status == "Processing");

または、「ステータスによるカウント」の辞書を作成することもできます。

var counts = list.GroupBy(x => x.Status)
                 .ToDictionary(g => g.Key, g => g.Count());
var completed = counts["Completed"];
var processing = counts["Processing"];
于 2012-12-29T17:29:54.067 に答える
1

trueと値で構成される結果を作成しているため、同じカウントが得られますがfalse、それらをカウントすると、コレクション内のアイテムと同じ数になります。

Whereの代わりにを使用するSelectか、代わりに条件を入力する必要がありCountます。

int completed = list.Count(x => x.Status == "Completed");
int processing = list.Count(x => x.Status == "Processing");
于 2012-12-29T17:30:09.040 に答える