2017-04-07 65 views
0

我有一個清潔工的列表(linq類)我試圖刪除'清潔工,如果他們未經證實。這是我的代碼。空白是一個「變量」,但是像'方法'一樣使用 - 爲什麼我會得到這個?

List<ConfirmCleaner> Unconfirmed = context.ConfirmCleaners.Where(d => d.confirmed == false).ToList(); 
       List<Cleaner> Cleaners = context.Cleaners.ToList(); 
       List<Cleaner> TempCleaners = new List<Cleaner>(); 

       foreach (var c in Unconfirmed) 
       { 
        foreach(var r in Cleaners){ 
         if(c.cleanerId == r.id){ 
          TempCleaners.Add(r); 
         } 
        } 


       } 
       List<Cleaner> result = Cleaners().Except(TempCleaners()).ToList(); 
       return result; 

爲什麼我會得到一個錯誤:

'吸塵器' 是 '變量',但使用像一個 '方法'

+1

在倒數第二行,什麼是'清潔劑()'該怎麼辦?我想你可能是指'Cleaners.Except(TempCleaners)'。 –

+0

它應該返回第一個列表中的內容,即。清潔工,除了第二清單中的內容外。 TempCleaners –

+0

好的,但變量是'Cleaners'(注意:沒有括號),在末尾加上括號會使編譯器認爲這是一個方法調用,而不是。 –

回答

4

問題是這樣的一行:

List<Cleaner> result = Cleaners().Except(TempCleaners()).ToList(); 

您需要將其更改爲:

List<Cleaner> result = Cleaners.Except(TempCleaners).ToList(); 
+0

Thx!我不得不使用TempCleaners的括號:) –

1

希望錯誤信息是非常明顯的標識問題,反正你已經宣佈Cleaners作爲Cleaner一個列表,當你在最終的查詢使用變量,您使用的是同樣喜歡Cleaners().當您使用像這樣,編譯器需要一個方法,這也是編譯器在錯誤消息中指定的內容。因此,代碼應該是:

return Cleaners.Except(TempCleaners()).ToList(); 
相關問題