2015-12-22 6 views
0

Привет, я использовал словарь, как показано ниже.Получение значений из словаря

Dictionary<int, List<double>> conditionbase = new Dictionary<int, List<double>>(); 

В этом словаре я сохранил максимальное и минимальное значения на основе columnindex в качестве ключа.

Теперь мне нужно получить конкретные значения столбцов и индексов на основе этих максимальных и минимальных значений?

+1

** "получить конкретные столбцы indexex на основе этих максимальных и минимальных значений" **. Покажите пример входных данных и выходных данных. Вы имеете в виду «показать все индексы столбцов, где я могу хранить значение X»? –

+0

Действительно, на данный момент этот вопрос не совсем ясен. Кроме того, если каждый список будет содержать два значения (минимум и максимум), я бы предложил создать класс или структуру для представления этих двух значений, а не использовать «Список ». –

+0

Существуют ли какие-либо требования к скорости поиска? Как вы получаете исходный 'double' для поиска (могут быть подводные камни в сравнении чисел с плавающей запятой)? Кроме того, вы можете изменить «Список » на 'Tuple ' (насколько я понимаю, в списке есть только два значения)? – Dennis

ответ

2

Предполагая, что значения min и/или max не уникальны для данного индекса столбца, вы хотите найти столбцы с определенным минимальным и максимальным значениями.

Таким образом, не обращая внимания на trickly бизнес двойного равенства, попробовать что-то вроде:

var min = 1.0; 
var max = 100.0 
var columns = conditionbase.Where(x => x.Value.Max() == max && x.Value.Min() == min).Select(y => y.Key).ToArray(); 

или, если максимум и минимум значения в индексах:

var columns = conditionbase.Where(x => x.Value[1] == max && x.Value[0] == min).Select(y => y.Key).ToArray(); 

Примечание: сравнения равенства из двухместных может быть сложно.

Если список содержит только макс и мин, то рекомендуется использовать тип как:

public class Limits 
{ 
    double Minimum {get; set;} 
    double Maximum {get; set; } 
} 

... Тогда ваш словарь становится:

var conditionbase = new Dictionary<int, Limits>(); 

намного лучше. Множество вариантов.

+0

Спасибо за ваш ответ, это данные, которые я сохранил в словаре key = 2, values ​​= 6, 99, хранящихся в списке key = 3, values ​​= -3, 99. Итак, теперь мой ключ равен 2, мне нужно получить доступ к значениям, хранящимся в списке, со ссылкой на список в списке? – user5663603

+0

состояниеbase [columnIndex] [списокIndex] –