2016-11-19 44 views
3

我有一个表格,其中有两列定义为varchar(50):Column1和Column2。我想返回一个字典<string, string>,其中每行都在字典中,其中Column1是键,Column2是值。这是我的:从linq查询返回字典<string,string>

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

       }).FirstOrDefault(); 

    } 
} 

我该如何让字典被填充?

谢谢。

+0

首先选择这两列(new {c.Column1,c.Column2}),然后实现(ToArray),然后调用ToDictionary。 – Evk

回答

9

试试这个:

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

请记住,在选择lambda中,您将执行投影并创建一些匿名对象。然后在ToDictionary中,您将选择匿名的一个属性作为您的键,并将对象本身作为值。

+0

这个作品,都很好。谢谢。 – frenchie

+0

请不要忘记标记你认为正确的答案。 –

0

因为你只需要一个第一行的价值,为什么不这样做第一:

var row = TheTable.FirstOrDefault(); 

而不仅仅是构建字典,如果你得到了结果:

return row == null ? null : 
     new Dictionary<string,string>{ {row.Column1, row.Column2 } };