我试图使用linq查询操作一些数据。但我不确定我的方式是最好的方法。
var makes = (from m in
(from pv in vehicleViews
let make = HttpUtility.ParseQueryString(new Uri("http://www.someurl.com" + pv.Url).Query).Get("Criteria.Make")
select new
{
Name = make,
Y = pv.TotalViews,
})
group m by m.Name into g
let total = g.Sum(x => x.Y)
select new
{
Name = g.Key,
Y = total
}).OrderByDescending(x => x.Y);
无论如何是否简化了此查询?
由于
答案 0 :(得分:2)
在分组之前,您确实有一些过多的投影,不必要的嵌套选择,以及使用非必要的方法语法。我相信以下内容相当于您的查询:
from pv in vehicleViews
let make = HttpUtility
.ParseQueryString(new Uri("http://www.someurl.com" + pv.Url).Query)
.Get("Criteria.Make")
group pv by make into g
let total = g.Sum(pv => pv.TotalViews)
orderby total descending
select new { Name = g.Key, Y = total };
let make =
行并不是绝对必要的(您可以直接group by
该值)但它确实使您更清楚计算的内容。