微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按总和Linq分组到C#中的SQL

如何解决按总和Linq分组到C#中的SQL

首先定义一个类来保存结果:

public class GroupedRow
{
  public string UserDescription {get;set;}
  public string ProjectDescription {get;set;}
  public double SumOfHoursBetweenToAndFromDate {get;set;}
}

由于您已经应用了过滤,因此剩下要做的就是分组。

List<GroupedRow> result =
(
  from row in source
  group row by new { row.UserDescription, row.ProjectDescription } into g
  select new GroupedRow()
  {
    UserDescription = g.Key.UserDescription,
    ProjectDescription = g.Key.ProjectDescription,
    SumOfHoursBetweenToAndFromDate = g.Sum(x => x.Hours)
  }
).ToList();

(或其他语法)

List<GroupedRow> result = source
  .GroupBy(row => new {row.UserDescription, row.ProjectDescription })
  .Select(g => new GroupedRow()
  {
    UserDescription = g.Key.UserDescription,
    ProjectDescription = g.Key.ProjectDescription,
    SumOfHoursBetweenToAndFromDate = g.Sum(x => x.Hours)
  })
  .ToList();

解决方法

确实对Linq进行SQL分组和求和非常困难,已经在所有地方进行了搜索,但是我不太了解如何将其他解决方案应用于我自己的解决方案。

我的数据库中有一个名为view_ProjectTimeSummary的视图,该视图具有以下字段:

string_UserDescription
string_ProjectDescription
datetime_Date
double_Hours

我有一个方法,该方法接受to和from日期参数,并首先创建此List <>:

List<view_UserTimeSummary> view_UserTimeSummaryToReturn = 
             (from linqtable_UserTimeSummaryView
              in datacontext_UserTimeSummary.GetTable<view_UserTimeSummary>()
              where linqtable_UserTimeSummaryView.datetime_Week <= datetime_To
              && linqtable_UserTimeSummaryView.datetime_Week >= datetime_From
              select linqtable_UserTimeSummaryView).ToList<view_UserTimeSummary>();

返回列表(用作datagridview的数据源)之前,我使用相同名称的参数过滤string_UserDescription字段:

if (string_UserDescription != "")
        {
            view_UserTimeSummaryToReturn = 
                        (from c in view_UserTimeSummaryToReturn
                         where c.string_UserDescription == string_UserDescription
                         select c).ToList<view_UserTimeSummary>();
        }

return view_UserTimeSummaryToReturn;

如何处理结果List <>以显示该用户和项目的to和from日期参数之间的double_Hours字段的 总和 (而不是每个日期的单独条目)?

例如具有以下字段的Lis​​t <>:

string_UserDescription
string_ProjectDescription
double_SumOfHoursBetweenToAndFromDate

我是对的意思,这意味着我将不得不返回不同类型的List <>(因为它的字段少于view_UserTimeSummary)?

我读过要得到总和,就像是’group / by / into b’,但是通过查看其他解决方案不了解该语法的工作原理。有人可以帮助我吗?

谢谢史蒂夫

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。