实体框架查询语法

时间:2011-11-20 04:50:25

标签: asp.net linq entity-framework linq-to-entities

我遇到查询问题

我需要从SHIPMENT取出GetAllOrderData - 您可以找到POD_DATERECEIVE_NAME的同一个地方......但我收到错误

  

错误1当前上下文中不存在名称“x”

我的代码是:

public IEnumerable<ReportItemDTO> GetTaskProgress(DateTime targetDate)
{
   try
   {
      var startDate = targetDate.Date;
      var endDate = startDate.AddDays(1);
      OrderDataRepository rep = new OrderDataRepository();

      var query = rep.GetAllOrderData()
                  .Where(x => x.POD_DATE >= startDate && x.POD_DATE <= endDate)
                  .GroupBy(o => o.User)
                  .Select(g => new ReportItemDTO
                    {
                      DriverId = g.Key.Id,
                      PdriverName = g.Key.Name,
                      OrderCount = g.Count(),
                      ReportedOrdersCount = g.Count(o => o.RECEIVE_NAME != null),
                      SHIPMENT = (x.SHIPMENT)
                    } );

      return query;

1 个答案:

答案 0 :(得分:1)

  SHIPMENT = (x.SHIPMENT)

当您尝试进行分配时,您处于分组范围内 - 每个分组中的许多货件不仅仅是一个 - 实际上是该特定用户的所有货件。假设你想要一个集合,你可以这样做:

Shipments = g.Select( x=> x.SHIPMENT)

修改

如果您只是希望每个用户的第一批货物(有点不合逻辑但适合您的数据模型):

SHIPMENT = g.Select( x=> x.SHIPMENT).First()