簡體   English   中英

如何使用 Linq 根據字典鍵的值選擇和過濾字典鍵?

[英]How can you select and filter dictionary keys based on their values using Linq?

給定一個Dictionary<int, double>

如何選擇值小於localThreshold的鍵?

例如,如果我有:

var someDict = new Dictionary<int, double>() {
    {1, 392.3},
    {2, 612},
    {3, 981} ... };

如果localThreshold為 400(假設沒有其他字典值小於 400),我想獲得值 1。

可以有多個與條件匹配的值 -

Dictionary<int, decimal> dict = new Dictionary<int,decimal>();
dict.Add(1, 392.3m); 
dict.Add(2, 612m); 
dict.Add(3, 981m); 
dict.Add(4, 344.23m);
List<int> Result = dict.Where(x => x.Value < 400).Select(x => x.Key).ToList();

干得好。 :-)

示例:如果字典包含 { (1,392.3) , (2, 612),(3,981),(4,344.23)...}

private IDictionary<int, decimal> myDict = new Dictionary<int,decimal>
{
    {1, 392.3m},
    {2, 612m},
    {3, 981m},
    {4, 344.23m}
}

現在我想按條件選擇一個鍵 if(dictionary.Value 小於 localVar) 然后選擇鍵。

public int[] GetKeysWhereValueLessThan(decimal value)
{
    return myDict
        .Where(kv => kv.Value < value)
        .Select(kv => kv.Key)
        .ToArray();
} 
        Dictionary<int, double> d = new Dictionary<int, double>();
        //(1,392.3) , (2, 612),(3,981),(4,344.23)
        d.Add(1, 392.3);
        d.Add(2, 612);
        d.Add(3, 987);
        d.Add(4, 344.23);

        //if(dictionary.Value less than localVar)
        double localVar = 500;
        var res = d.Where(i => i.Value < localVar).Select(j => j.Key);

        foreach(var v in res) Console.WriteLine(v);
        //1
        //4

編輯:我不夠快......

暫無
暫無

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

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