2013-03-20 28 views
5

我想通过查询SaleConfirmation表得到证实/敲定购买的总结,但我有很多与方法的语法查询难度。实体框架5的方法查询易拉宝

数据库表
这里是存储完成销售SaleConfirmation表结构。

Id OfferId ProdId  Qty SaleDate 
------------------------------------------------------- 
10 7   121518  150 2013-03-14 00:00:00.000 
19 7   100518  35  2013-03-18 14:46:34.287 
20 7   121518  805 2013-03-19 13:03:34.023 
21 10  131541  10  2013-03-20 08:34:40.287 
  • 编号:唯一的行ID。
  • OfferId:链接到Offer/Sale 表的外键。
  • 产品ID:产品表中的产品ID。
  • 数量:销售给客户的数量。
  • SaleDate:销售完成的日期。

控制器动作

var confRollUps = db.SaleConfirmation 
        .GroupBy(c => c.OfferId) // Ensure we get a list of unique/distinct offers 
        .Select(g => g.Select(i => new { 
          i.OfferId, 
          i.Product.Variety, // "Category" of product, will be the same across products for this offer. i.Product is a SQL Server Navigation property. 
          i.Offer.Price, // The price of the product, set per offer. i.Offer is a SQL Server Navigation property. 
          i.Offer.Quantity, // The quantity of items that are expected to be sold before the offer expires 
          i.Offer.DateClose, // Date of when the offer expires 
          g.Sum(ii => ii.Qty) // Sum up the Qty column, we don't care about ProdIds not matching 
        })); 

在选择查询的错误是g.Sum(ⅱ=> ii.Qty)和下面的错误是。

无效匿名类型成员声明。匿名类型成员必须使用成员分配,简单名称或成员访问来声明 。

回答

6

你只需要将匿名类型赋值给一个变量,试试这个。

var confRollUps = db.SaleConfirmation 
       .GroupBy(c => c.OfferId) // Ensure we get a list of unique/distinct offers 
       .Select(g => g.Select(i => new { 
         OfferId = i.OfferId, 
         ProductVariety = i.Product.Variety, // "Category" of product, will be the same across products for this offer. i.Product is a SQL Server Navigation property. 
         OfferPrice = i.Offer.Price, // The price of the product, set per offer. i.Offer is a SQL Server Navigation property. 
         OfferQty = i.Offer.Quantity, // The quantity of items that are expected to be sold before the offer expires 
         OfferDateClose =i.Offer.DateClose, // Date of when the offer expires 
         Total =g.Sum(ii => ii.Qty) // Sum up the Qty column, we don't care about ProdIds not matching 
       }));