使用以下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。
答案 0 :(得分:0)
您想要所有电子邮件的最大ID。
var maxId = People.SelectMany(p => p.Emails).Max(e => e.Id);
var nextId = maxId++;
使用SelectMany
将所有电子邮件展平为一个序列,然后从该列表中获取Max
ID。