簡體   English   中英

從列表中獲取唯一值 <Dictionary<string, string> &gt;

[英]Get Unique values from List<Dictionary<string, string>>

我有List<Dictionary<string, string>>對象,其中包含一些數據。

/* Values in the list will be like
   [0] - 
         aaa - aaaValue1   (Key, Value)
         bbb - bbbValue1
         ccc - cccValue1
         ddd - dddValue1 
   [1] - 
         aaa - aaaValue2   (Key, Value)
         bbb - bbbValue2
         ccc - cccValue2
         ddd - dddValue2 

    and so on */

我想在字典中獲取不同的值( List<string> ),其中鍵等於“ccc”,鍵“bbb”的值等於“bbbValue1”。

預期結果:

返回一個字符串列表,其中包含字符值,其中key等於“ccc”,並且鍵“bbb”的值等於List<Dictionary<string, string>>中的“bbbValue1”。

我想你想要:

var result = testData.Where(dict => dict.ContainsKey("EmpNo"))
                     .Select(dict => dict["EmpNo"])
                     .Distinct()
                     .ToList();

或者如果你想把結果作為一組:

var result = new HashSet<string>(from dict in testData       
                                 where dict.ContainsKey("EmpNo")        
                                 select dict["EmpNo"]);        

編輯 :你已經完全改變了你的問題,這不是一件好事(要求換一個新問題),而是以當前狀態回答:

var result = testData.Where(dict => dict.ContainsKey("ccc") 
                                 && dict.ContainsKey("bbb")
                                 && dict["bbb"] == "bbbValue1")
                     .Select(dict => dict["ccc"])
                     .Distinct()
                     .ToList()

認為最好像這樣展平列表:

testData.SelectMany(x => x)
        .Where(x => x.Key == "EmpNo")
        .Select(x => x.Value)
        .Distinct()
        .ToList();

我想這會給你正確的結果:

var result = testData.SelectMany(dict => dict)
                     .Where(dict => dict.Key.Equals("ccc") || (d.Key.Equals("bbb") && d.Value.Equals("bbbValue1")))
                     .Select(d => d.Value).Distinct().ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM