2017-08-05 7 views

答えて

0

おそらくLINQの基本を理解する必要があります。マイクロソフトドキュメントは、LINQ専用のセクション全体を持っている:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/

あなたがタイプのquestionsList<Question>と呼ばれるリストにあなたのデータを持っているなら、あなたはこのようなあなたのクエリを変換することができるはずです。

var ret = from q in questions 
      group q by q.StepId into grouped 
      let count = grouped.Count() 
      orderby count 
      select new { StepId = grouped.Key, nb = count }; 
+0

は、(1)基は、 '' IGrouping <,>ので、その '.Key'プロパティからキーを取得する(2)基は、そう、単一のグループを識別するそのために複数の名前を使用しないでください。 (3):Count()を2回しないでください。 – tinudu

+0

提案をいただきありがとうございます。 – sauravsahu

+0

ありがとうございます。D –

0

クエリ理解の構文:

from q in questions 
group q by q.StepId into g 
select new { StepId = g.Key, Count = g.Count() } into stepCount 
orderby stepCount.Count 
select stepCount; 

まったく同じ(私が好む、それはすべてのクエリ構文ができ、プラスよりも多くの場合、よりコンパクトであることができるので)メソッドの構文で:

別の GroupBy過用い
questions 
.GroupBy(q => q.StepId) 
.Select(g => new { StepId = g.Key, Count = g.Count() }) 
.OrderBy(stepCount => stepCount.Count) 

バリアント:

questions 
.GroupBy(q => q.StepId, (key, values) => new { StepId = key, Count = values.Count() }) 
.OrderBy(stepCount => stepCount.Count); 
+0

ありがとうございました。D –

+0

回答をアップアップし、おそらくそれを受け入れる(または他の回答、それはほぼ同じです)ので、幸せでしょうか。狩猟の評判... :-) – tinudu

関連する問題