2012-12-04 34 views
0

我想筛选其中一个类属性isactive的列表。但它没有正确过滤它显示所有项目。以下是代码。对布尔属性不起作用的筛选集合

Roaster_Driver[] drivers = null; 
drivers = client.GetDriverDetail(); 
List<Roaster_Driver> drvrs = drivers.Where(x => x.isactive = true).ToList(); 

它显示在drvrs所有项目甚至还出现在一些drivers不活跃的项目。当我调试程序并应用第三条LINQ语句时,drivers中的所有布尔值状态将被True更新。我尝试了下面的选择,但没有为我工作。

var drvrs = (from driver in drivers 
        where driver.isactive = true 
        select driver); 

什么是缺少我的代码或需要任何更改请帮助。

回答

1

比较通过==运营商完成,而不是单一的=(这是分配)。

List<Roaster_Driver> drvrs = drivers.Where(x => x.isactive == true).ToList(); 

你也不必布尔值与truefalse比较 - 直接使用价值:

List<Roaster_Driver> drvrs = drivers.Where(x => x.isactive).ToList(); 

查询语法:

var drvrs = from driver in drivers 
      where driver.isactive 
      select driver; 
+0

它为我工作。为什么它正在更新原始集合。你能帮忙吗? –

+0

@eraj对不起,是afk。它不应该更新原始集合,因为它只是查询,它过滤*原始集合 –

1

你必须使用==,而不是=比较在C#

List<Roaster_Driver> drvrs = drivers.Where(x => x.isactive == true).ToList(); 

List<Roaster_Driver> drvrs = drivers.Where(x => x.isactive).ToList();