C#基于多个复选框构建IF语句

时间:2016-04-12 19:32:57

标签: c# wpf

我将尽力以最简单的方式提出这个问题:

我正在使用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语句,它是根据我放在程序中的复选框构建的。这可能吗?

1 个答案:

答案 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
}

Demo