我有一个表,其中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();
}
}
如何填写字典?
答案 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 } };