如何在 ado.net 中编写由数据字典组成的查询
how to write query in ado.net consist of 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(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);
}
但我收到类似
的错误
Keypair value does not contain defination of Name and no accessible >extension method Name accepting first argument of type 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());
我想编写使用 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(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);
}
但我收到类似
的错误Keypair value does not contain defination of Name and no accessible >extension method Name accepting first argument of type 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());