Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在由数据字典组成的ado.net中编写查询_C#_Linq_Ado.net_Sqlcommand_Data Dictionary - Fatal编程技术网

C# 如何在由数据字典组成的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

我想编写使用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);
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());