C# 操作员'==';不能应用于int和';型号';

C# 操作员'==';不能应用于int和';型号';,c#,asp.net-mvc,if-statement,C#,Asp.net Mvc,If Statement,我知道这个错误在这里出现过几次,但我找不到解决我这个问题的方法 我有一个带有foreach循环的表,它填充了表数据,如下所示,该表还具有扩展/关闭功能,在此功能中,我希望显示相关部分中的所有组。错误运算符“==”不能应用于“int”类型的操作数,并且“GroupSection”出现在以下行中: if(item.SectionID==item.GroupSectionID) 我想确保只有当GroupSectionID与特定循环中的SectionID相同时,才能显示groups详细信息 表格 <

我知道这个错误在这里出现过几次,但我找不到解决我这个问题的方法

我有一个带有
foreach循环的表
,它填充了表数据,如下所示,该表还具有扩展/关闭功能,在此功能中,我希望显示相关部分中的所有组。错误
运算符“==”不能应用于“int”类型的操作数,并且“GroupSection”出现在以下行中:

if(item.SectionID==item.GroupSectionID)

我想确保只有当GroupSectionID与特定循环中的SectionID相同时,才能显示groups详细信息

表格

<table class="table table-striped">
    <!-- Render the table headers. -->
    <thead>
        <tr>
            <th class="col-md-1">+</th>
            <th class="col-md-2">Section ID</th>
            <th class="col-md-3">Section Name</th>

        </tr>
    </thead>
    <tbody>
        <!-- Render the details of each employee. -->
        @foreach (var item in Model)
        {
            <tr>
                <td class="col-md-1">+</td>
                <td class="col-md-2">@Html.DisplayFor(model => item.SectionID)</td>
                <td class="col-md-3">@Html.DisplayFor(model => item.SectionName)</td>
            </tr>

            if (item.SectionID == item.GroupSectionID)
            {
            <tr>
                <td class="col-md-1" colspan="3">@Html.DisplayFor(model => item.GroupID)</td>
                <td class="col-md-2" colspan="3">@Html.DisplayFor(model => item.GroupName)</td>
            </tr>
            }
        }
     </tbody>
</table>

提前感谢,我对堆栈比较陌生,因此如果您需要更多信息等。请告诉我您正在将
int
与复杂类型
GroupDetail
进行比较

if (item.SectionID == item.GroupSectionID.GroupSectionID)
我认为您正在查找
GroupDetail
类中的
GroupSectionID
属性

为了防止将来的混淆:


我建议从引用其他类的属性中删除
ID
后缀。这样,您就不会再次将其误认为是
int

您正在将
int
与复杂类型
GroupDetail
进行比较

if (item.SectionID == item.GroupSectionID.GroupSectionID)
我认为您正在查找
GroupDetail
类中的
GroupSectionID
属性

为了防止将来的混淆:


我建议从引用其他类的属性中删除
ID
后缀。这样,您就不会再次将其误认为是
int
:)

您试图让编译器比较两种不同的类型

item.SectionID是
int类型
,而
item.GroupSectionID
类类型

更改您的比较以表示您实际尝试比较的内容,类似于:

if (item.SectionID == item.GroupSectionID.GroupSectionID)

您试图让编译器比较两种不同的类型

item.SectionID是
int类型
,而
item.GroupSectionID
类类型

更改您的比较以表示您实际尝试比较的内容,类似于:

if (item.SectionID == item.GroupSectionID.GroupSectionID)


如果(item.SectionID==item.GroupSectionID.GroupID)
或者可能是
,我怀疑它需要
项目,GroupSectionID.GroupSectionID)
但是为什么您的模型中有3个属性的类型是
GroupDetail
?那些看起来和实际代表的东西没有任何关系的名字?(非常奇怪)基本上每个部分都由不同的组组成,所以x部分有y组和z组,t部分有a组、b组和l组等。所以我从数据库中的单独表中检索关于组的详细信息和关于该部分的详细信息,并将SectionID作为主键,所以我想使用这个主键(SectionID和GroupSectionID)要决定每个父(节)元素将包含哪些子(组)元素,则应适当命名属性(例如)
GroupX
GroupY
,等等-但仍然没有意义-您要将ID与这些属性中的哪一个进行比较?除非每个部分的组数完全相同(比如3个),则您的属性应为
IEnumerable Groups
——即一个属性,其中包含与节关联的组的集合。调试后,问题是在
foreach
中,GroupSectionID每次都返回null,但当我在控制器中检查时,我怀疑正在填充GroupDetail模型如果(item.SectionID==item.GroupSectionID.GroupID)
或者可能是
。==item,GroupSectionID.GroupSectionID)
,则需要是
,但是为什么模型中有3个属性的类型是
GroupDetail
?那些看起来和实际代表的东西没有任何关系的名字?(非常奇怪)基本上每个部分都由不同的组组成,所以x部分有y组和z组,t部分有a组、b组和l组等。所以我从数据库中的单独表中检索关于组的详细信息和关于该部分的详细信息,并将SectionID作为主键,所以我想使用这个主键(SectionID和GroupSectionID)要决定每个父(节)元素将包含哪些子(组)元素,则应适当命名属性(例如)
GroupX
GroupY
,等等-但仍然没有意义-您要将ID与这些属性中的哪一个进行比较?除非每个部分的组数完全相同(比如3个),则您的属性应为
IEnumerable Groups
——即一个属性,其中包含与节关联的组的集合。调试后的问题是,在
foreach
中,GroupSectionID每次都返回null,但当我在控制器中签入时,正在填充GroupDetail模型。谢谢太多了!我想这很简单:)将在10分钟后标记为正确@NielsFilterI刚刚运行了它,并返回了此错误
附加信息:对象引用未设置为对象的实例。
@hjardine,这可能是因为属性
GroupSectionID
为空(您尚未初始化它)(但请查看我对上述问题的评论-为什么您有3个属性是typeof
GroupDetail
?-您的模型没有任何意义,因为它is@hjardine,Stephen Muecke是对的。请确保已初始化
item.GroupSectionID
,或者将
if
更改为忽略html(如果为null):
if(item.GroupSectionID!=null&&item.SectionID==item.GroupSectionID.GroupSectionID)
我已经编辑了代码,所以现在它只包含一个,我已经添加了更多细节