[英]Linq Query Dictionary where value in List
我有一個Dictionary<string, string>
和另一個List<string>
。 我想要實現的是一個linq查詢,以使所有項都脫離字典,其中所述字典中的任何值都在List<string>
。
我發現這篇文章很有幫助, LINQ針對List查詢字典 。 並能夠編寫以下linq表達式,但是我的結果實際上從未返回任何內容。
到目前為止我所擁有的。
Data
是字典, PersonList
是字符串列表。
var Persons = PersonList.Where(x => Data.ContainsKey(x))
.Select(z => new { key = z, value = Data[z] })
.ToList();
您在尋找鍵或值嗎? 如果您正在尋找價值,請使用
var Persons = Data.Where(kvp => PersonList.Contains(kvp.Value))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
相反,如果您確實想要鍵,那么您的代碼應該可以工作,但另一個選擇是:
var Persons = Data.Where(kvp => PersonList.Contains(kvp.Key))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
試試這個:
var Persons = Data.Where(x=>PersonList.Contains(x.Value))
.Select(x=>new { key=x.Key, value=x.Value})
.ToList();
我將結果轉換為列表,因為我注意到您在代碼中使用了它。 如果您想將其用於字典,請查看D Stanley提供的答案。
我認為您不必將其轉換為ToDictionary,因為您的來源是字典:
var Persons = Data.Where(kvp => personList.Contains(kvp.Key))
.Select(x => x);
我很快在LinqPad中對其進行了測試,但是如果這是一個壞主意或我錯了,請發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.