2016-11-19 2 views
3

У меня есть таблица с двумя столбцами, определенными как varchar (50): Column1 и Column2. Я хочу вернуть словарь <string, string>, где каждая строка находится в словаре и где Column1 является ключом, а Column2 - значением. Это то, что у меня есть:Возврат словаря <строка, строка> из запроса linq

public Dictionary<string, string> LoadAllTheDataFromDB() 
{ 
    using (MyDC TheDC = new MyDC()) 
    { 
     return (from c in TheTable 
       select new Dictionary<string, string>() 
       { 
        //stuck here 

       }).FirstOrDefault(); 

    } 
} 

Как сделать так, чтобы словарь заполнился?

Спасибо.

+0

Первый Выберите эти два столбца (новый {c.Column1, c.Column2}), затем материализуйте (ToArray), затем вызовите ToDictionary. – Evk

ответ

9

Попробуйте это:

var dict = TheTable.Select(t => new { t.Col1, t.Col2}) 
       .ToDictionary(t => t.Col1, t => t); 

Помните, что в избранных лямбда вы будете выполнять проекцию и создать какой-то анонимный объект. Затем в ToDictionary вы выберете одно свойство анонимного как ваш ключ, а сам объект будет значением.

+0

Это работает, все хорошо. Благодарю. – frenchie

+0

Пожалуйста, не забудьте отметить ответ, который вы считаете правильным. –

0

Поскольку вам просто нужно значение одного первого ряда, почему бы не сделать этот первый:

var row = TheTable.FirstOrDefault(); 

И чем просто построить этот словарь, если вы получили результат:

return row == null ? null : 
     new Dictionary<string,string>{ {row.Column1, row.Column2 } }; 
Смежные вопросы