LINQ到SQL - '总结'内选择新
问题描述:
我有一个LINQ到SQL查询运行通过一个表,我想选择3总和 - '汇率'和'AdditionalCharges'的总和,所以我有这样的事情:LINQ到SQL - '总结'内选择新
var sums = from d in dc.Deliveries
where d.TripDate == DateTime.Now
select new
{
Rate = d.Rate,
AdditionalCharges = d.AdditionalCharges
};
然而,显然这会返回一个新行,每交付,这意味着我必须在事后总结起来 - 这似乎是非常低效的。有更容易的方法吗?
答
如果您使用的查询语法,你可以这样做以下
var data = dc.Deliveries.Where(d => d.TripDate == DateTime.Now)
var rateSum = data.Sum(d => d.Rate);
var additionalCharges = data.Sum(d => d.AdditionalCharges);
这是关我的头顶,没有测试
答
不知道,但你可以尝试出组轮空功能如下
var sums = from d in dc.Deliveries
where d.TripDate == DateTime.Now
group d by new {d.Rate,d.AdditionalCharges,d.TripDate} into g
select new
{
Rate = g.Sum(s => s.Rate),
AdditionalCharges = g.Sum(s => s.AdditionalCharges)
};
答
var sums = from d in dc.Deliveries
where d.TripDate == DateTime.Now
Group by d.TripDate // or primary key
Into TotalRate = sum(d.Rate),
TotalAdditionalCharges = sum(d.AdditionalCharges)
Select TotalRate , TotalAdditionalCharges
答
我知道这是一个老问题,但嘿,我发现它,所以希望这将hel p别人......
你也可以做到这一点使用流利的语法:
var sums = dc.Deliveries
.Where(d => d.TripDate == DateTime.Now)
.GroupBy(d => d.TripDate)
.Select(g =>
new
{
Rate = g.Sum(s => s.Rate),
AdditionalCharges = g.Sum(s => s.AdditionalCharges)
});
希望这可以帮助别人......
答
你应该能够做到这一点:
DateTime d = DateTime.Now;
var sums = from d in dc.Deliveries
select new
{
Rate = dc.Deliveries.Where(n => n.TripDate == d).Sum(n => n.Rate),
AdditionalCharges = dc.Deliveries.Where(n => n.TripDate == d).Sum(n => n.AdditionalCharges)
};
var result = sums.FirstOrDefault();
刚刚写出完全相同的代码,当你也击败了我:) – NotJarvis 2011-06-06 07:48:50
大声笑,我键入更快,因为在SO – NinjaNye 2011-06-06 07:49:44