6

参加してからgroupbyを実行しようとしていましたが、返されるグループ化された情報はすばらしいです。魅力のように機能しますが、それが理にかなっている場合は、グループ化の外部の値にアクセスする必要があります。

私はstackoverflowの例を見つけました、それはおそらくそれをよりよく説明します

var query = from c in context.Contacts
            join o in context.Orders on c.Id equals o.CustomerId
            select new 
            { 
                Contact = c, 
                Order = o 
            } into ContactAndOrder
            group ContactAndOrder by ContactAndOrder.Order.Id into g
            select new 
            { 
                g.Key, 
                ContactWhatever = g.Sum(co => co.Contact.Whatever), 
                OrderWhatever = g.Sum(co => co.Order.Whatever) 
            };

これはうまく機能しているようです。問題は私の状況ではco.Orderです。文字列が何であれ、文字列をintに変換できないというエラーが表示されます。これは、集計関数Sumがintを期待していることを理解しています。

私の質問は、実際には、co.Order.Whatever(私の場合は文字列)の値を取得できる集計関数などがありますか?

問題は、group byが実行されると、「c」と「o」が失われることです。

誰かが助けてくれることを願っています。

前もって感謝します

4

1 に答える 1

0

グループ内で常に同じであれば、最初のもので十分です...

ContactWhatever = g.First().Contact.Whatever

それ以外の場合は@AndreiAnswerまたは

ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b)
于 2012-06-14T08:47:27.483 に答える