簡體   English   中英

c#lambda字典,char []選擇項

[英]c# lambda dictionary, char[] selecting items

我對lambda並不是最好的,誰能教我如何使用字符數組從字典中選擇項目。

說我有一本字典;

Dictionary<char, int> someDictionary:

我有一個字符數組;

char[] someCharacterArray;

如何使用存儲在char數組中的鍵集合從字典中選擇項目;

someOtherDictionary = someDictionary.select( d =>
    someCharacterArray.contains(d.key)).toDictionary();

我知道那當然行不通,但是可以說明我想要的。

希望我的問題很清楚,但我整夜都醒着,所以請對我溫柔:)

預先感謝,達倫。

如果要檢查char是否包含在Dictionary中。

使用where方法

ToDictionary應該設置keyvalue Func委托

根據您的問題,您可能想要像這樣。

Dictionary<char, int> someOtherDictionary = someDictionary
            .Where(d => someCharacterArray.Contains(d.Key))
            .ToDictionary(o=> o.Key, o=>o.Value);

編輯

在數據結構中這將更快。 (感謝@TypeIA)

Dictionary<char, int> someOtherDictionary = someCharacterArray
                .Where(ch => someDictionary.ContainsKey(ch))
                .Select(ch => new { key = ch, value = someDictionary[ch] })
                .ToDictionary(o => o.key, o => o.value);

這種問題需要Join

    Dictionary<char, int> someDictionary = new Dictionary<char,int>
    {
        {'A',1},
        {'B',2},
        {'C',3},
        {'D',4}
    };


    char[] someCharacterArray = new [] {'A','B','C','E'};


    var filteredDictionary = someDictionary
        .Join
        (
            someCharacterArray, 
            d => d.Key, 
            c => c, 
            (d,c) => new { Key = d.Key, Value = d.Value}
        )
        .ToDictionary
        (
            k => k.Key, 
            v => v.Value
        );

    Console.WriteLine(string.Join("\r\n", filteredDictionary.Select(d => string.Format("{0}={1}", d.Key, d.Value))));

輸出:

A=1
B=2

DotNetFiddle上的代碼

暫無
暫無

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

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