C# 如何在由数据字典组成的ado.net中编写查询
我想编写使用linq和数据字典编写的查询,我想将该查询转换为ado.net格式C# 如何在由数据字典组成的ado.net中编写查询,c#,linq,ado.net,sqlcommand,data-dictionary,C#,Linq,Ado.net,Sqlcommand,Data Dictionary,我想编写使用linq和数据字典编写的查询,我想将该查询转换为ado.net格式 var insData = new Dictionary<string, string>(); insData = db.Query<TableName>("select Name, Value from Table where PId={id} and type<>{(int)Enum.PElement}").ToDictionary(k
var insData = new Dictionary<string, string>();
insData = db.Query<TableName>("select Name, Value from Table where PId={id} and type<>{(int)Enum.PElement}").ToDictionary(key => key.Name??t.TName, Val => Val.Value);
var insData=new Dictionary();
insData=db.Query(“从PId={id}和类型{(int)Enum.PElement}的表中选择名称和值”).ToDictionary(key=>key.Name??t.TName,Val=>Val.Value);
以上是我想将其转换为ado.net形式以提供此类型字典的查询
ToDictionary(key=>key.Name??t.TName,Val=>Val.Value)
我已经写了一半的代码,直到填充数据集为止
但更进一步,我很困惑如何进一步将其转换为具有上面显示的键对值的字典
这是我尝试过的代码
var dictonary = new SqlCommand($"select Name, Value from Table where PId={id} and type<>{(int)Enum.PElement}", con);
SqlDataAdapter sda2 = new SqlDataAdapter(dictonary);
DataSet ds2 = new DataSet();
sda2.Fill(ds2);
IEnumerable<DataRow> dataRows = ds2.Tables[0].Rows.Cast<DataRow>().ToList();
var insData = new Dictionary<string, string>();
foreach (DataRow row2 in dataRows )
{
insData.ToDictionary(key => key.Name ?? t.TName, Val => Val.Value);
}
var dictional=newsqlcommand($“选择名称,从PId={id}和类型{(int)Enum.PElement}的表中选择值”,con);
SqlDataAdapter sda2=新的SqlDataAdapter(命令式);
数据集ds2=新数据集();
sda2.填充(ds2);
IEnumerable dataRows=ds2.Tables[0]。Rows.Cast().ToList();
var insData=新字典();
foreach(数据行中的数据行第2行)
{
insData.ToDictionary(key=>key.Name??t.TName,Val=>Val.Value);
}
但我得到的错误就像
Keypair值不包含名称定义,并且没有可访问的>扩展方法名称接受KeyValuepair类型的第一个参数
我希望在ado.net中处理该查询,就像在上面所示的linq中一样。我将执行以下操作:
IEnumerable<DataRow> dataRows;
using (var dataSet = new DataSet())
{
using (var command = new SqlCommand($"select Name, Value from Table where PId={id} and type<>{(int) Enum.PElement}", con))
{
using (var sda2 = new SqlDataAdapter(command))
{
sda2.Fill(dataSet);
}
}
dataRows = dataSet.Tables[0].Rows.OfType<DataRow>();
}
return dataRows.ToDictionary(row => row["Name"].ToString(), row => row["Value"].ToString());
IEnumerable数据行;
使用(var dataSet=new dataSet())
{
使用(var command=newsqlcommand($“从PId={id}和类型{(int)Enum.PElement}的表中选择名称、值,con))
{
使用(var sda2=newsqldataadapter(命令))
{
sda2.填充(数据集);
}
}
dataRows=dataSet.Tables[0]。Rows.OfType();
}
返回dataRows.ToDictionary(row=>row[“Name”].ToString(),row=>row[“Value”].ToString());