2012-02-24 21 views
0

次のLINQ式に列を追加しようとしています。私は、WasteItemsと呼ばれる多くのテーブルにテキスト値の文字列連結を列に含める必要があります。参加は "Waste.WasteId = WasteItem.WasteId"になります。私の問題は、WasteItemに8つのレコードがあり、2つの文字列を含む列がWasteItem.EWCと呼ばれていた場合、「EW(5); EX(3)」などの文字列を単一の動的列に表示する必要があることです。 LINQが非常に強力であることを認識して以来、効率的な方法が必要です。私は開始またはこれについて行くする方法がわからそれに新しくないよ。このようなLINQTOSQLヘルプが必要

答えて

0

何かが何をすべき事前に

return from waste in this._db.Wastes 
      where (from u in _db.UsersToSites.Where(p => p.UserId == userId && p.SystemTypeId == SystemType.W) 
        select u.SiteId) 
        .Contains(waste.SiteId) 
      orderby waste.Entered descending select waste; 

THANKS:

wastesはからの結果である
wastes.GroupJoin(db.WasteItems, w => w.WastId, wi => wi.WasteId, (w,wi) => new { w, wi }) 
    .AsEnumerable() 
.Select(x => new 
{ 
    x.w.Name, 
    Items = string.Join(", ", x.wi.GroupBy(wi => wi.EWC).Select(g => string.Format("{0} ({1})", g.Key, g.Count()))) 
}) 

あなたの質問。 Entity Frameworkがstring.Joinを処理できないため、部分がメモリ内で処理される必要があるため、AsEnumerable()が必要です。

私は構文をチェックすることはできませんでしたが、少なくとも、それはあなたに行く方法を示すかもしれません。