Я новичок в Linq to Objects, и я только что столкнулся с проблемой анонимных типов и области действия.
Например, это прекрасно работает:
Public Sub CreateResults()
results = From e In CustomerList
Join f In OrderList On CustomerList.ID Equals OrderList.ID
Select New With {e.FirstName, e.LastName, f.OrderID}
For Each r in results
Console.Writeline(r.FirstName, r.LastName, r.OrderID)
Next t
End Sub
Однако это не так:
Public Class Foo
Private _linqResults
Public Sub CreateResults()
_linqResults = From e In CustomerList
Join f In OrderList On CustomerList.ID Equals OrderList.ID
Select New With {e.FirstName, e.LastName, f.OrderID}
End Sub
Public Sub PrintResults()
For Each r in _linqResults
Console.Writeline(r.FirstName, r.LastName, r.OrderID)
Next t
End Sub
End Class
Я просматривал SO и другие места, пытаясь найти простое решение для этого без особой удачи. Есть ли способ получить доступ к полям анонимного типа вне области метода, содержащего запрос Linq? Что-то вроде:
Console.Writeline(r("FirstName").ToString, r("LastName").ToString)
будет приемлемо, но не идеально.
Я действительно, действительно, не хочу начинать создавать дополнительные классы / структуры / DTO для обработки того, что должно быть динамическим запросом.