Проблема с использованием лямбды .Где()
У меня странная проблема с каким-то кодом. Если я использую этот код, он падает на тамошние custParts.Где(функция(cv), с ошибкой:
Делегат метода экземпляра не может иметь null 'this'
Dim custParts As CustomerPartNumbers = New CustomerPartNumbers() ' Inherits ComponentModel.BindingList(Of CustomerPartNumber), which is just another data class Dim queryString As String = "Wallpaper" custParts.Load("DummyCustomer") If Not custParts Is Nothing Then Dim qS As String = queryString Dim cp As CustomerPartNumber For Each cp In custParts.Where(Function(cv) cv.CustomerPartNumber = qS) Dim cpPN As String = cp.PartNumber If prodResults.Where(Function(z) z.PartNumber = cpPN).Count = 0 Then prodResults.Add(New Hathaway.Library.Part(cpPN)) End If Next End If
Однако, если я помещаю лямбду в переменную, она, кажется, работает без проблем.
Dim custParts As CustomerPartNumbers = New CustomerPartNumbers() ' Inherits ComponentModel.BindingList(Of CustomerPartNumber), which is just another data class Dim queryString As String = "Wallpaper" custParts.Load("DummyCustomer") If Not custParts Is Nothing Then Dim qS As String = queryString Dim xxx As Object = custParts.Where(Function(cv) cv.CustomerPartNumber = qS) Dim cp As CustomerPartNumber For Each cp In xxx Dim cpPN As String = cp.PartNumber Next End If
У кого-нибудь есть идеи, почему он это делает? и почему я не могу просто за Рор каждый против моей лямбды??
Спасибо
Редактировать:
Как ни странно, это работает:
Dim zxcustParts As CustomerPartNumbers = New CustomerPartNumbers() zxcustParts.Load("DummyCustomer") Dim zxqueryString As String = "Wallpaper" For Each zxcustPart In zxcustParts.Where(Function(zxcp) zxcp.CustomerPartNumber = zxqueryString) Dim cpPN As String = zxcustPart.PartNumber Next
Правка 2:
Ладно, я действительно понял, что это такое... Моя кодовая вставка неудачного кода на самом деле пропустила бит, который вызвал ошибку (хотя я уверен, что просто C/P'D прямо из источника). Так что я обновил это.
Проблема в том, чтобы попытаться сделать второй ".Где" внутри а для каждого из первых.