需要LINQTOSQL帮助

时间:2012-02-24 13:19:18

标签: linq linq-to-sql

我正在尝试向以下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 :(得分:0)

这样的事情应该做:

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()是必需的,因为实体框架无法处理string.Join,因此必须在内存中处理该部分。

显然,我无法检查语法,但至少它可能会告诉你要走的路。