布尔LINQ问题

时间:2013-04-04 17:42:35

标签: c# linq entity-framework linq-to-entities

我的数据库表中有一个名为IsActive的字段,可以是TrueFalse。但是,当我查询数据库时,我的查询也会返回非活动行:

这是我的LINQ查询:

var j = from x in db.DashboardMenus 
        where x.ParentID == c.SiteMenuID && c.IsActive == true 
        orderby x.SortOrder ascending 
        select x;

1 个答案:

答案 0 :(得分:12)

您的查询中有拼写错误。当您使用c.IsActive时,您正在使用x.IsActive,因为这是您要查询的表对象。否则,只要x处于活动状态(这似乎是您的问题),它将返回ParentID和SiteMenuID匹配的所有c个对象。

var j = from x in db.DashboardMenus 
        where x.ParentID == c.SiteMenuID && x.IsActive
        orderby x.SortOrder ascending 
        select x;

将来,通过使用更具描述性(和更长)的变量名称(甚至是LINQ查询)可以更好地为您提供更好的服务,以便更好地确保不再遇到此问题。