Случается, что обнаруженная вами ошибка связана не с привязкой данных, а с LINQ.Запросы LINQ выполняются лениво, то есть они на самом деле не получают данные до тех пор, пока не станут абсолютно необходимыми.Это объясняет, почему вы не видите симптомов до вызова .DataBind()
.
Оператор привязки данных к представлению списка может принимать различные типы данных.Я обычно связываю IList, массив или DataTable.Результаты вашего запроса LINQ всегда будут применяться, если они перечислимы.
Если вы объединяете свои контексты данных в один контекст, вы можете выполнить соединение без ошибок.Если этот параметр недоступен, сначала извлеките свои коллекции в виде локального списка, а затем создайте запрос LINQ-to-objects.
var routesQuery = from routes in routesModel.Routes.ToList()
join locales in localesModel.Locales.ToList()
on routes.LocaleID equals locales.LocaleID
// ...
(Примечание. Если вы предварительно фильтруетенабор результатов до загрузки данных .ToList()
).
Я настоятельно предпочитаю решение объединения контекстов данных.