[英]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.