如何在Linq和Dictionary c#中使用条件值来选择?

时间:2015-08-11 05:55:28

标签: c# linq dictionary

我有一个字典,现在我想通过在c#中使用Linq在字典值中执行关系操作来选择密钥。

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

现在我想按条件选择一个键if(dictionary.Value小于localVar)然后选择键。

如果您知道,请提供您宝贵的答案。

最佳

Parthi

3 个答案:

答案 0 :(得分: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 :(得分:1)

你走了。 : - )

  

示例:如果字典包含{(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();
} 

答案 2 :(得分:1)

        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

编辑:我的速度不够快......