Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ检查布尔值_C#_Linq - Fatal编程技术网

C# LINQ检查布尔值

C# LINQ检查布尔值,c#,linq,C#,Linq,我有一份附属清单 public class AffiliateConfiguration { public int AffiliateConfigurationId { get; set; } public string Name { get; set; } public bool IsActive { get; set; } } 使用以下示例数据: (1,"AddOn",true) (2,"DummyEmail",false) (3,"ProviderType",tr

我有一份附属清单

public class AffiliateConfiguration
{
    public int AffiliateConfigurationId { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
使用以下示例数据:

(1,"AddOn",true)
(2,"DummyEmail",false)
(3,"ProviderType",true)
基本上,如果我的列表包含任何名称等于ProviderType且其IsActive值包含false的项,我希望执行一些操作。 我试过了,这是正确的方法吗

if (AffiliateConfigurations.Any(x => x.Name.Equals("ProviderType")) && !AffiliateConfigurations.FirstOrDefault(x => x.Name.Equals("ProviderType")).IsActive)
 {
    //perform some action
 }

这不是像下面这个条件那么简单吗?您不必检查两次,因为您可以直接访问
IsActive
属性

if (AffiliateConfigurations.Any(x => x.Name.Equals("ProviderType") && !x.IsActive))
{

}

您可以直接检查
IsActive

if (AffiliateConfigurations.Any(x => x.Name.Equals("ProviderType") && !x.IsActive ) )
 {
    //perform some action
 }

您正在执行两个验证: -首先,检查集合中是否至少有一项名称与“ProvidersType”匹配。 -您可以再次迭代您的集合,以找到这样的项(它将在第一次验证通过后存在),并检查它是否处于活动状态

您可以在一次运行中完成此操作: 如果(附加配置.Any(x=>x.Name==“ProviderType”&&x.IsActive==false/*或“!x.IsActive”*/)) { //执行一些操作 }


如果“AffiliateConfigurations”是一个IEnumerable,则可以“筛选”您的集合的linq方法中的大多数都将接受
Func
谓词
(如
Any
Where
FirstOrDefault
Single
,…),只要最后返回一个
bool
值,就可以将任何类型的代码bock作为这些参数的一部分。

只需像John Woo说的那样使用这个条件

x => x.Name.Equals("ProviderType") && !x.IsActive

哪种方法只在附件配置中循环一次,在您的方法中,它必须循环两次,一次用于任何部件,一次用于第一个或默认部件…

这一点很清楚。只是好奇,我的也能用,对吧?只是这不合适approach@HumaAli否,因为如果有两条记录的名称=ProviderType,并且第一个IsActive值为true,则它将不满足条件。完美!现在清楚了。但在我的例子中,ProviderType只存在一次。无论如何,它清除了我的概念。您的代码将获取第一个名为
RoviderType
的项,并评估其
IsActive
-属性,即使它是
true