2017-11-26 16 views
1

私はDataGridViewを検索用語に基づいて照会しようとしており、さらにCheckBoxステータスに基づいて結果を絞り込んでいます。私は、次のコードを照会すると、どんなに私が入力した検索語が、何の結果にかかわらずCheckBox状態の返されませんチェックボックスの選択に基づいて結果を表示

var memberIdSearch = from m in context.Members 
         where m.MemberId == idSearch 
         where checkBoxActive.Checked && m.MemberStatus == "Active" 
         where checkBoxInactive.Checked && m.MemberStatus == "Inactive" 
         select m; 

を持っています。私は、チェックボックスの行をコメントアウトした場合、クエリはアクティブなチェックボックスがチェックされている場合

私はMEMBERIDは検索用語に一致した場合

を達成しようとしている、すべての表示を表示する検索語に一致するすべてのエントリを返し、すべてのアクティブなメンバー非アクティブなチェックボックスがチェックされている場合、そして、また、私は、これは単純なものであると確信しているが、私は

+0

はそれですか?チェックボックス名は2つのwhere節で異なっていますか、何か不足していますか? –

+0

ああ、見落としましたが、本質的に 'm.MemberStatus ==" Active "&& m.MemberStatus ==" Inactive "'が含まれています。 –

+0

だから私はクエリを解剖する方法は... memeberIDが一致し、アクティブにチェックされ、すべてのアクティブなメンバーを表示し、非アクティブになっている場合は、非アクティブなメンバーも表示します。クエリが正しくない場合はどうすればいいですか –

答えて

1

それをうまくすることはできません非アクティブ部材

を表示すると、グループに1内のすべての文をお試しください:

var memberIdSearch = from m in context.Members 
         where m.MemberId == idSearch && 
         (checkBoxActive.Checked && m.MemberStatus == "Active" || 
         checkBoxInactive.Checked && m.MemberStatus == "Inactive") 
         select m; 
+0

釘付け、ありがとう! –

+0

@melya大括弧で2つの条件を分けることをお勧めします。 '((checkBoxActive.Checked && m.MemberStatus ==" Active ")||(checkBoxInactive.Checked && m.MemberStatus ==" Inactive "))'これは予期せぬ結果をもたらす可能性がある – Stephen

+0

オペレータの優先順位に従って@Stephen問題ないはずです。大括弧では読みやすさはやや良いです。 – melya

関連する問題