簡體   English   中英

Linq查詢字典中列表中的值

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

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