2017-02-14 9 views
0

ミッションに割り当てられている人のリストで人に割り当てられた最大日付を取得するためのエレガントなLinqの方法はありません。辞書内の値のリストから最大の日付を取得

私のコードは、私は値

MissionList[0] Key = MissionImpossible 
      Value = count 1 
        Key=Sean 
        Value=count 7 
         [0] = date = 10/01/2017 
         [1] = date = 10/01/2016 
         [2] = date = 10/01/2017 
         [3] = date = 10/01/2018 
         [4] = date = 10/01/2015 
         [5] = date = 10/01/2014 
         [6] = date = 10/01/2013 

MissionList[1] Key = MissionImpossibleThePayPack 
      Value = count 1 
        Key=Connery 
        Value=count 4 
         [0] = date = 10/01/2017 
         [1] = date = 10/01/2019 
         [2] = date = 10/01/2017 
         [3] = date = 10/01/2018 

のこの種のこの辞書を持っている

public class Mission 
{ 
    public string MissonAssignedTo { get; set; } 
    public DateTime Date { get; set; } 
} 

public Dictionary<string, Dictionary<string, List<Mission>>> MissionList = 
    new Dictionary<string, Dictionary<string, List<Mission>>>(); 

である私は、それぞれの人のための辞書と彼の最大の日、このような何かを取得する必要があります。

dicoResult= { 
       {Sean,10/01/2018} , 
       {Connery,10/01/2019} 
      } 

Jolynice

+1

あなたは辞書のサンプルの有効なC#のコードを提供することができますか?これまでに試したことを見せてください。 –

答えて

1

私は、これはあなたに期待した結果与える必要正しくあなたを理解している場合は、カスタムタイプは、私には奇妙に見えますが: -

var result = MissionList.SelectMany(x => x.Value) 
         .ToDictionary(x => x.Key, y => y.Value.Max(z => z.Date)); 

まず、あなたの内側の辞書を平らにし、最終的に結果を予測します辞書ToDictionaryを使用しています。

Sample Fiddle.

+1

Rahul、ありがとう、私のカスタムタイプは変です。より正確なものに変更すると思います。 – jolynice