LINQTOSQL Требуется помощь - PullRequest
       0

LINQTOSQL Требуется помощь

0 голосов
/ 24 февраля 2012

Я пытаюсь добавить столбец к следующему выражению LINQ.Я хочу, чтобы столбец содержал конкатенацию строк текстового значения во многих таблицах под названием WasteItems.Объединение будет на «Waste.WasteId = WasteItem.WasteId».Моя проблема заключается в том, что мне нужно отобразить в одном динамическом столбце строку, например «EW (5); EX (3)», если в WasteItem было 8 записей, а столбец, содержащий строку из 2 символов, назывался WasteItem.EWC.Надеюсь, что это имеет смысл, должен быть эффективный способ, так как я понимаю, что LINQ очень мощный.Я новичок в этом и не знаю, как начать или пойти по этому поводу:

    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;

СПАСИБО ЗА ПРЕДЕЛА

1 Ответ

0 голосов
/ 27 февраля 2012

Примерно так должно поступить:

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())))
})

Где wastes - результат вашего запроса.AsEnumerable() необходим, потому что Entity Framework не может обрабатывать string.Join, поэтому эта часть должна обрабатываться в памяти.

Я не мог проверить синтаксис, очевидно, но, по крайней мере, он может показать вам путьидти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...