2015-08-11 1 views
-11

У меня есть словарь, теперь я хочу выбрать ключ, выполнив операцию отношения в словарных значениях с помощью Linq в C#.Как выбрать значение, используя условие в значении в Linq и Dictionary C#?

Пример: Если словарь содержит {(1,392.3), (2, 612), (3981), (4,344.23) ...}

теперь я хочу, чтобы выбрать ключ, если условия (dictionary.Value меньше, чем localVar), затем выберите ключ.

Пожалуйста, укажите ваш ценный ответ на это, если вы знаете ..

Best

Парти

+1

смотрите ниже ответы. они дают идею делать то, что я ожидаю. – Parthi

ответ

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,392.3), (2, 612), (3981), (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 less than localVar), затем выберите ключ.

public int[] GetKeysWhereValueLessThan(decimal value) 
{ 
    return myDict 
     .Where(kv => kv.Value < value) 
     .Select(kv => kv.Key) 
     .ToArray(); 
} 
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 

EDIT: Я был недостаточно быстр ...