У меня есть список приложений. Каждое приложение может иметь или не иметь связанную с ним запись поддержки.VB.NET Linq Left Join using Query Syntax
Единственный способ, которым я могу присоединиться, - это взять название приложения и посмотреть, соответствует ли он LookupValue поддержки (продукта). Но чтобы получить это свойство, мне нужно отбросить его в поле FieldLookupValue. Когда нет связанной записи поддержки, это то, где ошибка нулевой ссылки возникает в .MoveNext()
внутри запроса Linq. Ниже приведен пример того, что в настоящее время работает для приложений, имеющих связанную поддержку, но выдает ошибку, когда они этого не делают.
Dim q =
From a In apps.AsEnumerable()
Group Join s In support.AsEnumerable()
On a("Title").ToString() Equals CType(s("Product"), FieldLookupValue).LookupValue
Into Group
From ajs In Group.DefaultIfEmpty()
Select New With {
.Name = a("Title"),
.SupportEnd = IIf(ajs Is Nothing, Nothing, ajs("End"))
}
Как можно сравнить анонимные типы в заявлении On? Кажется, я не могу получить синтаксис, или, возможно, это невозможно. Я чувствую, что может исправить ошибку нулевой ссылки. Моя неудачная попытка вернулась Равно не может сравнивать тип со значением типа
Dim q =
From a In apps.AsEnumerable()
Group Join s In support.AsEnumerable()
On
(New With {Key .AppName = a("Title").ToString()}) Equals
(New With {Key .AppName = IIf(s Is Nothing, "nada", CType(s("Product"), FieldLookupValue).LookupValue)})
Into Group
From ajs In Group.DefaultIfEmpty()
Select New With {
.Name = a("Title"),
.SupportEnd = IIf(ajs("End") Is Nothing, Nothing, ajs("End"))
}
Любые идеи о том, как получить это присоединиться к работе, используя один из двух неудачных методов выше было бы здорово.