2016-08-25 10 views
1

数字の出現順でリストをソートし、繰り返し項目を1回だけ表示する必要があります。たとえば、私は次のリストを持っています:"a", "b", "a", "a", "c", "d", "c"。私はそれをこのようにソートしたい:"a","c","b",d"。どうすればこれを達成できますか?出現回数によるLINQソート

私が作ったものである。

var something = from c in db.Letters 
      group c by c.letter into p 
      orderby p.Count() 
      select new 
      { 
       p.letter 
      }; 

しかし表現p.letterを使用することはできません。

+0

を返信したいと思います。 'GroupBy'、' OrderByDescending'グループ 'Count()'、 'Select'グループ' Key' –

+2

ようこそStackOverflow!いくつかのコードを書いてこれを達成することができます。 SOは無料のコーディングサービスではありません。これまでに何を試しましたか? –

+0

私は2時間の努力をしています。私が書いたものはすべて間違っていたので、添付しなかった。一分待ってみたいと思ったら、どうぞ。 – Artur

答えて

0
var resunt = from c in db.Letters 
      group c by c.letter into p 
      orderby p.Count() descending 
      select p.Key; 

あなたはあなたが別にグループ化されてきたKeyオブジェクトとグループ内の値のコレクションのプロパティを含むIGrouppingオブジェクトを取得GroupBy使用しています。あなたの場合は、Key - c.letter

+0

私は動作しません。アルファベット順に並んだリストを取得しています。 – Artur

+1

OK、「orderby p.Count()descending」を追加しました。ありがとうございました! – Artur

+0

@Artur - アルファベット順にはソートされませんが、カウントが最も小さいものが最大にソートされます。編集を参照 –

関連する問題