GroupBy函数用于检索每个类别的第一行,其状态为Success,并由UpdatedDate作为最新订单

时间:2018-04-19 09:59:16

标签: c# entity-framework linq

我有一个表,用于存储每个类别中的交易状态。类别例如说信用卡,借记卡等1可能有15个状态存储用于CC,5个用于DC。我想对类别进行分组,查看更新日期所订购的状态并获取状态。

status = ldstatusC.LoadCardStatus
  .Where(w => w.Status = "S")
  .OrderByDescending(sDate => sDate.Updated_Date)
  .GroupBy(gSt => gSt.CardType)
  .Select(s => new Models.MODEL_LoadCardStatus()
  {
      CardTypeID = s.CardTypeId,
      CardType = s.Key,
      transactionStatus = s.Status,
      UpdatedDate = s.updatedDate
  })
  .ToList<Models.MODEL_LoadCardStatus>();

使用此代码,我得到如下所示的错误。

  

IGrouping<string, LoadCardStatus>不包含LoadCardStatus_Id的定义,也没有扩展方法LoadCardStatus_Id   接受IGrouping<string, LoadCardStatus>类型的第一个参数   可以找到(你错过了使用指令或程序集   引用?)'

我用Google搜索了很多内容,但大多数分组只是用于获取计数。

1 个答案:

答案 0 :(得分:2)

由于GroupBy生成的每个项目都是一个组,因此如果您希望访问其各个项目的属性,则需要添加First()Min()或其他聚合方法:

.Select(g => new Models.MODEL_LoadCardStatus {
    CardTypeID = g.First().CardTypeId,
    CardType = g.Key,
    transactionStatus = g.First().Status,
    UpdatedDate = g.Select(s => s.UpdateDate).Max()
})