Заполнение многозначного словаря результатами запроса - PullRequest
0 голосов
/ 08 августа 2011

Я получаю пять столбцов с помощью SQL-запроса. Среди найденных столбцов у меня есть столбец RecordID , который должен действовать как ключ для словаря.

Я имею в виду опубликованное решение: Многозначный словарь C # в StackOverflow, но я не могу использовать его эффективно в зависимости от моей ситуации.

Я хочу сохранить все строки моего запроса, но столбец RecordID должен также выступать в качестве ключа к элементу словаря. Я хочу что-то вроде:

Dictionary<RecordID, Entire columns of the current row for this RecordID>

Альтернатива, я думаю, это использовать массив, например:

Dictionary<key,string[]>

Но я хочу использовать любой сверхбыстрый способ.

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Используйте Lookup - вы мало что сказали о данных, но вам может понадобиться что-то простое:

var lookup = list.ToLookup(x => x.RecordID);

Конечно, есть перегрузкидля ToLookup, которые позволяют вам делать другие вещи.

0 голосов
/ 19 мая 2014

О боже, вам нужен специальный класс для хранения значений. Поскольку столбцы взяты из таблицы БД, количество полей является фиксированным. Следовательно, вы можете иметь класс с фиксированными полями, а не динамически растущую коллекцию. И, наконец, используйте структуру KeyedCollection<TKey, TItem> для хранения коллекции записей. В KeyedCollection<TKey, TItem> часть TKey встроена в TItem, в вашем случае это RecordId.

class Record
{
    public int Id { get; set; }
    //rest of the fields
}

Ваша структура должна выглядеть как KeyedCollection<int, Record>. Это также сохраняет порядок вставки. Вы можете запросить коллекцию, используя RecordId через индексатор, как словарь.

...