2011-10-17 20 views
0

を使用する方法を考え出すことはできません?のLINQ ORDERBY、私はこの機能を持ってそれを

私が試してみた:

.OrderBy(c=> c.TheBadge.OrderID) 
をしかし、それは有効なコードではありません。ループ内の TheBadge.KeytblBadgesタイプです。インテリセンスがなぜ私がどこででも注文をすることができない理由は、私にはちょっと混乱しています!

+0

「Orderby」ステートメントはどこにありますか? – ChrisF

+0

"有効なコードではありません。" OrderByを追加しようとしたのはどのラインでしたか、特にエラーメッセージは何ですか? –

+0

LINQ to SQLと仮定しますか? – Steven

答えて

4

TheBadgeは、バッジのグループだ...ので、私があなただったら、私は個人的に名前を変更したい、単一バッジではありません。今、です。OrderIdあなたは取得しますか? gruopには複数のエンティティがあります。たとえば、あなたがこれを行うことができます:いくつかの想定元本「最初の」要素で注文します

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => c.BadgeID) 
    .Select(c => new { BadgeCount = c.Count(), TheBadge = c }) 
    .OrderBy(x => x.TheBadge.First().OrderId); 

- 私は、生成されたSQLがどのように見えるか知りませんが。

あなたはOrderIdは、同じIDを持つすべてのバッジのために同じであると予想される場合は、あなたが使用する可能性があります:

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => new { c.BadgeID, c.OrderID }) 
    .OrderBy(group => group.Key.OrderID) 
    .Select(c => new { BadgeCount = c.Count(), TheBadge = c }); 
0

これを試してみてください。次の行で

var q = db.tblBadgeUsers 
    .Where(c => c.UserID == UserID) 
    .GroupBy(c => c.BadgeID) 
    .Select(c => new { BadgeCount = c.Count(), TheBadge = c.Key }) // *mod 
    .OrderBy(c=> c.TheBadge.OrderID);  // * added 

、TheBadgeはAですlinqコレクションではなく、バッジ自体です。あなたはc.Keyが欲しいです。

.Select(c => new { BadgeCount = c.Count(), TheBadge = c }) 
関連する問題