Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回字典<;字符串,字符串>;从linq查询_C#_Asp.net_Linq To Sql - Fatal编程技术网

C# 返回字典<;字符串,字符串>;从linq查询

C# 返回字典<;字符串,字符串>;从linq查询,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我有一个表,其中有两列定义为varchar(50):Column1和Column2。我想返回一个字典,其中每一行都在字典中,其中Column1是键,Column2是值。这就是我所拥有的: public Dictionary<string, string> LoadAllTheDataFromDB() { using (MyDC TheDC = new MyDC()) { return (from c in TheTable se

我有一个表,其中有两列定义为varchar(50):Column1和Column2。我想返回一个
字典,其中每一行都在字典中,其中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();

   }
}
public Dictionary从db()加载所有数据
{
使用(MyDC=new MyDC())
{
返回(从表中的c开始)
选择新字典()
{
//困在这里
}).FirstOrDefault();
}
}

我怎样才能使字典填好呢

既然您只需要第一行的值,为什么不先这样做:

 var row = TheTable.FirstOrDefault();
如果你得到了结果,那就构建字典吧:

 return row == null ? null : 
       new Dictionary<string,string>{ {row.Column1, row.Column2 } }; 
返回行==null?无效的:
新字典{{row.Column1,row.Column2};
试试这个:

var dict = TheTable.Select( t => new { t.Col1, t.Col2} )
               .ToDictionary( t => t.Col1, t => t);
请记住,在“选择lambda”中,您将执行投影并创建一些匿名对象。然后在
ToDictionary
中,您将传递两个参数:第一个参数是用于指定密钥的lambda;在上面的代码中,我们选择
Col1
作为键。第二个参数是用于指定值的lambda;在上面的代码中,我们选择对象本身作为值

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

ToDictionary( t => t.Col1, t => new { t.Col2 });
如果希望该值为已定义的类型,请更改第二个lambda,如下所示:

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

首先选择这两列(new{c.Column1,c.Column2}),然后具体化(ToArray),然后调用ToDictionary。请不要忘记标记您认为正确的答案。