LINQ和SUM()的投影

时间:2012-09-04 07:02:10

标签: c# asp.net linq projection

此查询按客户返回我们数据库中排名前25位的畅销商:

var query =  from bs in db.MYDATABASE
             where bs.COMPANY == "MY COMPANY"
             group bs by bs.PRODCODE into g
             orderby g.Sum(x => x.MQTY) descending
             select new BestSeller
             {
                 product_code = g.Key,
                 product_description = g.First().DESCRIPTION,
                 total_quantity = g.Sum(x => x.MQTY) 
             };
var top25 = query.Take(25);

我已经told in this question我需要在以下行为以下LINQ查询创建投影:

total_quantity = g.Sum(x => x.MQTY)

有人可以解释投影的含义和例子吗?

1 个答案:

答案 0 :(得分:0)

当您从查询中选择几个字段并将其创建/投影到新类型时,Projection是关于LINQ使用的术语。当您在查询中执行select new时,您实际上正在进行投影。在您的情况下,您从查询表达式中选择g.Keyg.First().DESCRIPTION等字段,并创建类型为BestSeller的新对象。

由于您的original questio n没有分配任何total_quantity字段,这就是Jon Skeet要求您为投影添加总和的原因。

您需要在MSDN上查看有关投影的以下文章:

Formulate Projections
Query Expression Syntax Examples: Projection