繁体   English   中英

Linq-to-SQL gridview添加和列

[英]Linq-to-SQL gridview add sum column

我在GridView中有此linq查询

 var table = from ll in dbo.Workers
                    join p in dbo.WorkDays on ll.Id equals p.Id
                    orderby p.Enter
                    select new
                    {
                        ll.Id,
                        ll.Name,
                        ll.Salary,
                        p.Enter,
                        p.ExitT,
                        p.Place,
                        WorkTime = Math.Round(getWorkTime(p.Enter, p.ExitT), 2),
                        Earned = Math.Round(getEarned(p.Enter, p.ExitT, ll.Salary), 2),
                    };

如何将总和列添加到表中?

创建将保存数据并根据该数据提供计算的类:

public class WorkerInfo
{
    // I don't know exact type of fields, but its enough for you to get the idea
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Salary { get; set; }
    public DateTime Enter { get; set; }
    public DateTime ExitT { get; set; }
    public string Place { get; set; }

    public int WorkTime
    {
       get { return (ExitT - Enter).TotalDays; }
    }

    public decimal Earned
    {
       get { return WorkTime * Salary; }
    }
}

用数据填充这些实体:

var workers = from ll in dbo.Workers
              join p in dbo.WorkDays on ll.Id equals p.Id
              orderby p.Enter
              select new WorkerInfo
              {
                 Id = ll.Id,
                 Name = ll.Name,
                 Salary = ll.Salary,
                 Enter = p.Enter,
                 ExitT = p.ExitT,
                 Place = p.Place
              }; 

UPDATE示例,用于返回整天的汇总数据:

var query = from w in dbo.Workers
            join d in dbo.WorkDays on w.Id equals d.Id into days
            let WorkTime = days.Sum(d => d.ExitT - d.Enter)
            select new 
              {
                 w.Id,
                 w.Name,
                 w.Salary,
                 WorkTime,
                 Earned = WorkTime * w.Salary
              }; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM