无法将字符转换为c中类库中的项#

eufgjt7s  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(397)

对编码完全陌生,我认为在这个问题之前我有一个很好的块。我想将一条新记录保存到sql,但试图从另一个表中捕获所选项的id。我想我可以使用与捕获数据列表时相同的foreach结构,但这是一个组合框中的单个记录。我做错什么了?

Public Usermodel createnewlogin(Usermodel model)
{
    Using(IdataConnection connections = new System.data.Sqlclient.SqlConnection(
        GlobalConfig.cnnstring(db))
    {
        var x = new DynamicParameters();
        x.Add("@name1", model.user1);
        x.Add("@name2", model.user2);

        foreach(Profession p in model.professionid)
        {
            x = new DynamicParameters();
            x.Add("@name1", model.user1);
            x.Add("@name2", model.user2);
            x.Add("@professionid", p.id);

            Connection.Execute("dbo.madeup_insert", x, 
                commandType: CommandType.StoredProcedure);
        }

        return model;
    }
}

foreach给出以下错误:“无法将类型‘char’转换为classlibrary.profession”
professionid的类型是int。它是递增的id,在usermodel类中将profession类作为一个整体进行标识。当用户选择这个值时,他们是从profession类中选择professionname,它是一个类型字符串。因此,我尝试将与一个类中的字符串相关联的id保存在另一个类中,该类基于在combobox下拉列表中选择的professionname。用户在任何时候都看不到也不知道id,这就是为什么他们选择professionname,而不是id本身。

zbdgwd5y

zbdgwd5y1#

在您的代码行中:

foreach(Profession p in model.professionid)

model.prefessionid是char类型的对象。在该代码下添加参数p.id。我假设这是您要查找的选定项目id?您需要确定所选id来自哪个数据列表。您说过您要查找的值应该是组合框中的单个记录。因此,在用户做出选择后,应该获取组合框的selectedvalue属性或文本值,而不是model.professionid。您不需要foreach语句。
我将需要一个更深入的解释或代码,以帮助您获得您所期待的结果。

相关问题