我将尽力以最简单的方式提出这个问题:
我正在使用DirectoryServices.AccountManagement命名空间对Active Directory执行搜索。当我想在DataGrid中放置数据时,我能够手动构建搜索条件。例如:
if (up != null && up.SmartcardLogonRequired == true
&& up.Custom_Attribute_1.Contains("SomeText"))
{
// Add items to DataGrid
}
并且ALL工作得很好。我想要做的是通过在我的程序中添加复选框来构建IF语句。意思是,if语句看起来像这样:
if (up != null)
除非选中智能卡必需复选框,否则它将如下所示:
if (up != null && up.SmartcardLogonRequired == true)
但如果没有选中,并且CustomAttribute1框是,则它看起来像这样:
if (up != null && up.Custom_Attribute_11.Contains("SomeText")
所以基本上我正在寻找一个条件IF语句,它是根据我放在程序中的复选框构建的。这可能吗?
答案 0 :(得分:4)
您可以构建Func<bool>
的集合。像这样的东西
var conditions = new List<Func<bool>>();
// Append conditions here as much as you want
conditions.Add(() => up != null);
if (SmartcardLogonRequired)
conditions.Add(() => up.SmartcardLogonRequired == true);
if (someCondition)
conditions.Add(() => up.Custom_Attribute_11.Contains("SomeText"));
// Evaulate
if (conditions.All(x => x())) {
// Add items to DataGrid
}