2

データベース テーブルに と呼ばれるフィールドがあり、それはまたはIsActiveのいずれかになります。ただし、データベースにクエリを実行すると、クエリは非アクティブな行も返します。TrueFalse

これは私のLINQクエリです:

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

1 に答える 1

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 クエリの場合でも) を使用することで、より適切なサービスが提供される可能性があります。

于 2013-04-04T17:51:43.210 に答える