2017-06-12 5 views
-2

私はLINQにはかなり新しいですが、私はそれをやっていると思います。LINQクエリOrderByDambling式がラムダ式を認識しない

私はselect文をグループ化しようとしていますが、降順に並べ替えようとしています。私はかなり遠くに他の質問を見ていますが、OrderByDescending()関数をアタッチしようとすると、追加しようとするラムダ式はintellisenseによって認識されません。

var test = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0) 
          .GroupBy(n => n.User1.Country).OrderByDescending(); 

ので、例えば、.OrderbyDescending(x => x.User1.Country)User1の定義が含まれていません。

これは私の声明の発注と関係がありますか?私はの前にOrderByと呼んでいると思いますが、私はそれを修正する方法について私の頭を包み込むことはできません。

グループの注文方法を教えてください。

ああ!ほとんど忘れてしまった - 私はトップ3の国しか望んでいないので、それを制限する簡単な方法はありますか?トップのみ/最初の3グループ

任意の助けてくれてありがとうを選択するために、どのよう

  • 同じLINQ機能にGroupByOrderByDescendingを使用する方法

  • +0

    グループを注文するか、グループ内のアイテムを注文しますか? –

    +0

    国別に注文し、次に.OrderbyDescending(x => x.Key)を使用する場合は、グループ – mint

    +1

    を注文したいと思います.Take(3) – jitender

    答えて

    0

    私は、これはあなたが欲しいものだと思う:

    var test = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0). 
         GroupBy(n => n.User1.Country).Select(x=>x.First()).OrderByDescending().Take(3); 
    
    +0

    これはうまくいかなかった - 'OrderByDescending()'はパラメータを必要とし、 'First()'もエラーを投げます。私はそれが働くようになった - 助けてくれてありがとう! – mint

    0
    var countriesInOrder = db.UserPokemons.Where(x => x.PkmnDataId == pokemon.Id && x.StepsToHatch == 0). 
           GroupBy(n => n.User1.Country).OrderByDescending(x => x.Key).Take(3).ToArray(); 
    

    はそれを手に入れた - ラムダ式は、グループ化した後x.Keyに行く必要があります。 (Thanks jitender!)

    関連する問題