2017-05-14 6 views
0

次のJSONでは、電子メールIDの最大値を取得したいと考えています。それは最初の要素だけをチェックするために私のコードC#でエンティティフレームワークで最大ID値を取得

[ 
    { 
    "id": 1, 
    "firstName": "Bill", 
    "lastName": "Smith", 
    "emails": [ 
     { 
     "id": 1, 
     "email": "[email protected]", 
     "dateCreated": "2017-05-14T14:04:12.3299297-07:00" 
     }, 
     { 
     "id": 2, 
     "email": "[email protected]", 
     "dateCreated": "2017-05-14T14:04:24.1534621-07:00" 
     }, 
     { 
     "id": 3, 
     "email": "[email protected]", 
     "dateCreated": "2017-05-14T14:04:29.8526171-07:00" 
     } 
    ] 
    }, 
    { 
    "id": 2, 
    "firstName": "Bill", 
    "lastName": "Smith", 
    "emails": [   
     { 
     "id": 4, 
     "email": "[email protected]", 
     "dateCreated": "2017-05-14T14:04:45.8674213-07:00" 
     } 
    ] 
    } 
] 

は、これまで

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

しかし、これは常に、4を返します。 1つのlinq文ですべてをチェックする方法はありますか?したがって、次の値は5になります。

+0

返された要素のうちの最初の要素を取る前に、選択した値を順序付ける必要があります。 – DevilSuichiro

+0

あなたが投稿したコードでは、私は4ではなく3になります。 –

+1

'People.Select(p => p.Emails.Max(i => i.Id))。Max();'は私のために働きます –

答えて

0

すべてのメールの最大IDが必要です。

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

使用SelectMany 1つのシーケンスにすべてのメールを平らにし、そのリストからMax IDを取得します。

関連する問題