如何使用linq修改表格布局?

时间:2015-09-08 11:33:51

标签: c# entity-framework linq

我是LINQ的新手,所以对我来说似乎很复杂。

我在数据库中有这个表:

enter image description here

我使用LINQ to Entity获取表记录:

  var inspectionsData = context.Set<inspectionsData>().ToList();

现在我需要制定一些逻辑来使inspectionsData看起来像这样:

enter image description here

正如您可以看到行,其中Cities和Authority相同,我希望它们在一行中包含总计项目。 如何在c#中使用linq进行这些更改?

1 个答案:

答案 0 :(得分:6)

使用GroupBy语句执行此操作,然后使用Select投影到新对象。

var result = context.Set<inspectionsData>()
                  .GroupBy(d => new {d.City, d.Authority})
                  .Select(g => new {g.Key.City, g.Key.Authority, Items = g.Sum(x => x.Items)})
                  .ToList();

使用匿名对象作为响应,但由于您的响应实际上与初始对象具有相同的形状,您还可以投射回inspectionsData

var result = context.Set<inspectionsData>()
                  .GroupBy(d => new {d.City, d.Authority})
                  .Select(g => new inspectionsData{
                               City = g.Key.City, 
                               Authority = g.Key.Authority, 
                               Items = g.Sum(x => x.Items)})
                  .ToList();