出於某種原因,這種說法是工作的罰款:在LINQ語句中使用類型別名產生錯誤
vms.Where(vm => vm.MessageType == ValidationMessage.EnumValidationMessageType.Warning)
但是,如果在類的頂部,我定義別名(爲了節省空間):
using MsgType = ValidationMessage.EnumValidationMessageType;
然後將所得的代碼行:
vms.Where(vm => vm.MessageType == MsgType.Warning)
給我一個錯誤:
「委託 'System.Func<ValidationMessage, int, bool>
' 不帶1個參數」。有什麼奇怪的是,這不是我正在使用的代表。我使用的.Where<>()
的「System.Func<ValidationMessage, bool>
」超載 - 同樣的當我不使用別名。
注意,在其他地方正在使用的別名工作正常,這只是內部的這些LINQ的代表,它打破。這是爲什麼發生?
Ahahaha。如果我嘗試通過爲第二個(索引)參數給出一個arg來解決它:'vms.Where((vm,i)=> vm.MessageType == MsgType.Warning)',然後翻轉並說「委託'System.Func'不需要2個參數「!真是笑話。 –
Alain
如果你嘗試編譯,你會得到相同的錯誤嗎?或者只是VS錯誤檢測顯示它們? – nemesv
真的很好。我的代碼沒有處於編譯狀態,因此我沒有嘗試它,但是我註釋掉了未完成的代碼,並嘗試運行併發生了更合理的錯誤:它找不到我的類型別名聲明的名稱空間。解決方案是完整地描述類型的路徑:'使用MsgType = WPF.Utilities.ObjectModel.ValidationMessage.EnumValidationMessageType;'之後,所有事情都修復了。 – Alain