C# 返回字典<;字符串,字符串>;从linq查询
我有一个表,其中有两列定义为varchar(50):Column1和Column2。我想返回一个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
字典,其中每一行都在字典中,其中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。请不要忘记标记您认为正确的答案。