2012-12-04 33 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();