c# - 如何在 ado.net 中编写由数据字典组成的查询
问题描述
我想编写使用 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 值不包含 Name 的定义,并且没有可访问的 >extension 方法 Name 接受 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());
推荐阅读
- google-earth-engine - 谷歌地球引擎中的 ee.Geometry.BBox 和 ee.Geometry.rectangle 有什么区别吗?
- hyperledger-fabric - 如何修复 Hyperledger Fabric 中的“执行 End-2-End Scenario sleep 时出错:缺少操作数”?
- java - 在没有 JavaSwing 的情况下使用 MVC 模式的 Java 菜单中的职责
- html - 如何实施 AWS Amplify 异步函数
- mysql - 两个不同表的除法结果
- sas - 条形图上的 SAS 更改频率
- embedded - NFC标签中被动态锁定位锁定的字节位置
- java - 从 json 元素中删除前缀并再次形成 json
- python - 在张量板 HPARAM 页面中显示最小值
- c# - JsonIgnore 来自父级的子属性