Search code examples
c#asp.netlinqprojection

LINQ and Projection for SUM()


This query returns the top 25 best sellers from our database, by customer:

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);

I've been told in this question that I need to create a projection for the following LINQ query at the following line:

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

Please could someone explain what is meant by a projection and examples of such?


Solution

  • Projection is the term used with respect to LINQ when you are selecting few fields from the query and creating / projecting it to a new type. When you are doing select new in your query, you are actually doing projection. In your case you are selecting fields like g.Key and g.First().DESCRIPTION from your query expression and creating a new object of type BestSeller.

    Since your original question didn't has the total_quantity field assigned to anything that is why Jon Skeet asked you to add the sum to your projection.

    You need to see the following articles on MSDN about projection:

    Formulate Projections
    Query Expression Syntax Examples: Projection