2014-12-07 28 views
0

我有<int, bool>,如何解決以下獨特的發現問題?

1, false; 2 true;... ; 9 true;

我需要找出是否有一個獨特的字典。

例如,如果所有除9都是假的,我可以輸出9

如何實現這一目標?

+0

是鍵連續整數? – 2014-12-07 11:18:25

+1

您可以按值(按IEnumerable對待)進行分組,並檢查密鑰的數量。 – 2014-12-07 11:19:30

回答

3

您可以通過Value組,並得到有一個項目組:

var result = dictionary 
      .GroupBy(x => x.Value) 
      .First(g => g.Count() == 1) // get the group 
      .First().Key; // get the first pair in the group and it's key 

這將拋出異常,如果沒有獨特的價值,防止這種情況,你可以使用:

var result = dictionary 
      .GroupBy(x => x.Value) 
      .FirstOrDefault(g => g.Count() == 1); 

if(result != null) 
{ 
    var value = result.First().Key; 
} 
+0

如此強大!我第一次看到Linq的力量。對於新手的問題,如果沒有這樣的項目,結果是什麼,NULL? – 2014-12-07 13:21:54

+0

有例外:) – 2014-12-07 13:22:20

+0

有沒有辦法避免異常? – 2014-12-07 13:23:36