2013-04-04 45 views
2

我的数据库表中有一个名为IsActive的字段,它可以是TrueFalse。当我查询数据库,不过,我的查询还返回无效行:布尔LINQ问题

这是我的LINQ查询:

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

只是一个提示,你不需要'== true',要么'c.IsActive'用于'true',要么'!c.IsActive'用于'false' – mattytommo 2013-04-04 17:43:58

回答

12

你必须在查询一个错字。当您应该使用x.IsActive时,您正在使用c.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查询),以更好地确保您不会再碰到这个问题提供服务。