C# 从keyvaluepair插入数据库表

C# 从keyvaluepair插入数据库表,c#,key-value,C#,Key Value,尝试将列表中的值与keyvaluepair中的键匹配,并从keyvaluepair中检索相应的值并用作sql参数,在我的示例中,它是@ValueDE foreach (KeyValuePair<int,string> kvp in Valuedescripts) { int val = kvp.Key; string descrip = kvp.Value; foreach (DataUds data in DataUds) { us

尝试将列表中的值与keyvaluepair中的键匹配,并从keyvaluepair中检索相应的值并用作sql参数,在我的示例中,它是@ValueDE

foreach (KeyValuePair<int,string> kvp in Valuedescripts)
{
    int val = kvp.Key;
    string descrip = kvp.Value;

    foreach (DataUds data in DataUds)
    {
        using (DB2Connection sqlconn = new DB2Connection())
        {
            sqlconn.Open();

            DB2Command cmdtx = new DB2Command();

            string insert = @"INSERT into LNPY (LN_NR, ITEM_NAME, MR_NR, VALUE)
                            VALUES (@LN, @Nbr, @Val, @ValueDE)";
            cmdtx.Parameters.Add("@Nbr", data.MN);
            cmdtx.Parameters.Add("@Ln", data.LN);
            cmdtx.Parameters.Add("@Val",data.item);
foreach(Valuedescripts中的KeyValuePair kvp)
{
int val=kvp.Key;
字符串descripp=kvp.Value;
foreach(DataUds中的DataUds数据)
{
使用(DB2Connection sqlconn=new DB2Connection())
{
sqlconn.Open();
DB2Command cmdtx=新的DB2Command();
字符串insert=@“插入LNPY(LN\u编号,项目名称,MR\u编号,值)
值(@LN、@Nbr、@Val、@ValueDE)”;
cmdtx.Parameters.Add(“@Nbr”,data.MN”);
添加(“@Ln”,data.Ln);
cmdtx.Parameters.Add(“@Val”,data.item);
如何获取此参数? Cmdtx.Parameters.Add(“@valueDE”


Data.item来自一个列表,我需要使用该值将其设置为val(kvp.key),检索相应的Descrip并将其作为参数填写。

我不确定您到底想要什么,除了需要将keyvaluepair中的值用作插入查询中的参数这一点。我想您已经接近了

foreach (KeyValuePair<int,string> kvp in Valuedescripts)
{
    int val = kvp.Key;
    string descrip = kvp.Value;

    foreach (DataUds data in DataUds)
    {
        //something like
        if (descrip == data.item) //only u know it
        {
            using (DB2Connection sqlconn = new DB2Connection())
            {
                sqlconn.Open();

                DB2Command cmdtx = new DB2Command();

                string insert = @"INSERT into LNPY (LN_NR, ITEM_NAME, MR_NR, VALUE)
                                  VALUES (@LN, @Nbr, @Val, @ValueDE)";
                cmdtx.Parameters.Add("@Nbr", data.MN);
                cmdtx.Parameters.Add("@Ln", data.LN);
                cmdtx.Parameters.Add("@Val",data.item);
                cmdtx.Parameters.Add("@ValueDE", val);
             }

             break; //again only u know it. Will be good if you have only item to match
        }  
    }
}
foreach(Valuedescripts中的KeyValuePair kvp)
{
int val=kvp.Key;
字符串descripp=kvp.Value;
foreach(DataUds中的DataUds数据)
{
//差不多
if(descrip==data.item)//只有你知道它
{
使用(DB2Connection sqlconn=new DB2Connection())
{
sqlconn.Open();
DB2Command cmdtx=新的DB2Command();
字符串insert=@“插入LNPY(LN\u编号,项目名称,MR\u编号,值)
值(@LN、@Nbr、@Val、@ValueDE)”;
cmdtx.Parameters.Add(“@Nbr”,data.MN”);
添加(“@Ln”,data.Ln);
cmdtx.Parameters.Add(“@Val”,data.item);
cmdtx.Parameters.Add(“@ValueDE”,val);
}
break;//同样,只有你知道。如果你只有一个项目可以匹配,那就好了
}  
}
}

此外,不要以这种方式向db插入对象列表,这将比使用
值(…),(…)的批量插入慢得多,(……
语法。您应该循环通过foreach来实际构造查询….

那么问题出在哪里?为什么不使用
int val
value?我需要在keyvaluepair列表中查找data.ln,找到与键对应的值,并将其设置为@valueDe参数。好的,更多解释数据。项来自列表and我需要使用该值在keyvaluepair列表中查找val(kvp.key),如果data.item=val(kvp.key),我想检索descripp(kvp.value)和填充参数。很抱歉,我错过了顶部的if。@LewSim如果您需要使用keyvaluepairs列表中的值检查data.item value,那么您的外部循环最好是datauds循环,内部循环最好是keyvaluepairs循环列表