C# 无法将字符转换为c中classlibrary中的项

C# 无法将字符转换为c中classlibrary中的项,c#,sql,winforms,foreach,C#,Sql,Winforms,Foreach,对编码完全陌生,我认为在本期之前我有一个很好的了解。我想将一条新记录保存到sql,但试图从另一个表中捕获所选项的id。我想我可以使用与捕获数据列表时相同的foreach结构,但这是组合框中的一条记录。我做错了什么 Public Usermodel createnewlogin(Usermodel model) { Using(IdataConnection connections = new System.data.Sqlclient.SqlConnection( Glo

对编码完全陌生,我认为在本期之前我有一个很好的了解。我想将一条新记录保存到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,它是一个类型字符串。因此,我试图根据combobox下拉列表中选择的ProfessionName将与该字符串相关联的id从一个类保存到另一个类中。用户在任何时候都看不到也不知道id,这就是为什么他们选择ProfessionName,而不是id本身。

在您的代码行中:

foreach(Profession p in model.professionid)
model.PreferenceId是char类型的对象。在该代码下添加参数p.id。我假设这是您要查找的选定项目id?您需要确定所选id来自哪个数据列表。您说过要查找的值应该是组合框中的一条记录。因此,在用户做出选择后,您应该获取SelectedValue属性或combobox的文本值,而不是model.professionid。对此,您不需要foreach语句


我需要更深入的解释或代码来帮助您获得所需的结果。

模型是什么类型的,以及如何定义该类型?professionid属性似乎是某种字符的集合。抱歉,我认为我需要包含整个内容。在进行此操作时,请确保您的代码将实际编译。看起来它在Word中是自动大写的。它看起来不像C代码。我更新了它,而且它一直在自动将我在手机上的所有内容资本化。但是在VisualStudio中,一切都是正确的。如果从编辑器中复制实际代码并将其粘贴到问题中,堆栈溢出效果会更好。你和那些愿意帮助你的人可以肯定,你的问题不是由于抄写错误造成的。是的!确定,因此用户从组合框中选择ProfessionName,该组合框来自Profession类中的专业列表。然后用于连接用户输入的其余数据以满足Usermodel类的要求。但是我不希望ProfessionName保存到数据库中的这个表中,我想要整个记录,它由ProfessionName来自的id指示。那么,您想要professionid,对吗?因此,听起来好像ProfessionName是combobox的DisplayMember这是运行应用程序时combobox中显示的值。您需要的是组合框的SelectedValue当您将列表绑定到组合框时,您应该有一个DisplayMember和一个ValueMember。您应该将ProfessionId设置为组合框的ValueMember。你能告诉我填充组合框数据的代码吗?另外,你能展示UserModel和Profession模型的类吗?你所说的正是我现在要讲的。您的解决方案看起来可以工作,但我显然没有正确地构建它,因为我现在收到一个错误,它说它无法将nvarchar转换为int…这告诉我我仍然没有提取该id。我将在下面的另一个注释中发布代码ListcurrentProfessions=GlobalConfig.Connections.GetProfessions\u All;///private void ListWireup{ProfessionValue.Datasource=currentProfessions;ProfessionValue.DisplayMember=ProfessionName;ProfessionValue.ValueMember=id;}///公共类专业{public int id{get;set;}公共字符串ProfessionName{get set;}公共字符串ProfessionLevel{get set;}公共字符串ProfessionLevel{get get set;}///公共类UserModel{public int id{get;set;}公共字符串ProfessionName{get;set;}公共字符串Username{get;set;}公共字符串SAP{get;set;}感谢您提供的额外信息。根据您的UserModel类,您的问题中的模型定义和代码似乎不一致。您有一个模型变量,应该是UserModel类型,但有一行包含model.user1,UserModel类中没有名为user1.Ca的属性n您对此解释一下吗?并且您已经将正确的属性列为组合框的ValueMember,因此在执行insert语句时,您应该能够执行ProfessionValue。SelectedValue ProfessionValue作为组合框