从linq查询返回字典<string,string =“”>

时间:2016-11-19 21:59:37

标签: c# asp.net linq-to-sql

我有一个表,其中2列定义为varchar(50):Column1和Column2。我想返回<string, string>的字典,其中每一行都在字典中,其中Column1是键,Column2是值。这就是我所拥有的:

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

               }).FirstOrDefault();

   }
}

如何填写字典?

2 个答案:

答案 0 :(得分:25)

试试这个:

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

请记住,在select lambda中,您将执行投影并创建一些匿名对象。然后在ToDictionary中,您将传递两个参数:First Parameter是一个lambda来指定键;在上面的代码中,我们选择Col1作为关键。第二个参数是lambda来指定值;在上面的代码中,我们选择对象本身作为值。

如果您希望该值为匿名类型,请更改第二个lambda,如下所示:

ToDictionary( t => t.Col1, t => new { t.Col2 });

如果您希望该值是您定义的类型,请更改第二个lambda,如下所示:

ToDictionary( t => t.Col1, t => new YourType { Prop1 = t.Col2 });

答案 1 :(得分:2)

由于您只需要第一行的值,为什么不首先执行此操作:

 var row = TheTable.FirstOrDefault();

如果你得到了结果,那么只需构建那个字典:

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