使用C#中的Entity Framework获取最大ID值

时间:2017-05-14 21:11:57

标签: entity-framework asp.net-web-api

使用以下JSON我想获取电子邮件ID的最大值。

[
  {
    "id": 1,
    "firstName": "Bill",
    "lastName": "Smith",
    "emails": [
      {
        "id": 1,
        "email": "jack@jackkkfgfkfgkkkkkk.com",
        "dateCreated": "2017-05-14T14:04:12.3299297-07:00"
      },
      {
        "id": 2,
        "email": "jack@jackkkfkkkkkk.com",
        "dateCreated": "2017-05-14T14:04:24.1534621-07:00"
      },
      {
        "id": 3,
        "email": "jack@jackfkkkkkk.com",
        "dateCreated": "2017-05-14T14:04:29.8526171-07:00"
      }
    ]
  },
  {
    "id": 2,
    "firstName": "Bill",
    "lastName": "Smith",
    "emails": [         
      {
        "id": 4,
        "email": "jack@jkkkkk.com",
        "dateCreated": "2017-05-14T14:04:45.8674213-07:00"
      }
    ]
  }
]

到目前为止我的代码

var maxId = People.Select(p => p.Emails.Max(i => i.Id)).FirstOrDefault();

然而,这总是返回4,因为它只检查第一个元素。有没有办法在单个linq语句中检查所有内容?所以下一个值是5。

1 个答案:

答案 0 :(得分:0)

您想要所有电子邮件的最大ID。

var maxId = People.SelectMany(p => p.Emails).Max(e => e.Id);
var nextId = maxId++;

使用SelectMany将所有电子邮件展平为一个序列,然后从该列表中获取Max ID。