[英]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.