Linq查询简化

时间:2014-12-19 12:45:29

标签: c# linq

我试图使用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);
无论如何

是否简化了此查询?

由于

1 个答案:

答案 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该值)但它确实使您更清楚计算的内容。