【问题标题】:Entity Framework 5 Method Query Roll UpEntity Framework 5 方法查询汇总
【发布时间】:2013-03-20 20:03:24
【问题描述】:

我正在尝试通过查询 SaleConfirmation 表来获取已确认/已完成购买的摘要,但我在方法语法查询方面遇到了很多困难。

数据库表
这是存储最终销售额的 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:唯一的行 ID。
  • OfferId:链接到优惠/销售的外键 表。
  • ProdId:产品表中产品的 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
                   }));

select查询中的错误是g.Sum(ii => ii.Qty),错误如下。

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

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-mvc-4 anonymous-types


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      相关资源
      最近更新 更多