Я пытаюсь получить результаты с помощью LINQ в WPF на Visual Studio 2015 с использованием Entity Framework 6 (EF). Результаты должны появиться в одном ListView
для тестов сотрудника. У меня есть два объекта EF: DrugTests
и AlcoholTests
. В моем проекте у меня есть некоторые модели просмотра, чтобы их сопоставить с: DrugTestViewModel
и AlcoholTestViewModel
, оба получены из интерфейса ITestViewModel
.Linq AddRange() для объектов, полученных из интерфейса
Две виртуальные машины имеют много свойств, а также имеют свои собственные уникальные (отсюда необходимость в двух объектах). Я использую LINQ, чтобы вернуть Task<ObservableCollection<ITestViewModel>>
, первая выборка из DrugTests
лица:
var query = (from dt in context.DrugTests
.Where(x => x.employeeID.Equals(employeeId))
select new DrugTestViewModel
{
EmployeeId = dt.employeeID,
TestType = "Drug",
OrderedDate = dt.orderedDate,
// set other properties
}
).ToList();
Тогда я пытаюсь добавить в запрос с помощью этого:
query.AddRange(from at in context.AlcoholTests
.Where(x => x.employeeID.Equals(employeeId))
select new AlcoholTestViewModel
{
EmployeeId = at.employeeID,
TestType = "Alcohol",
// set other properties...
}
);
Это дает следующее исключение на AddRange()
:
Аргумент 1: не может конвертировать из
'System.Linq.IQueryable<MySolution.ViewModel.AlcoholTestViewModel>'
в'System.Collections.Generic.IEnumerable<MySolution.ViewModel.DrugTestViewModel>'
Что я делаю неправильно?
Ваша проблема заключается в том, что 'query' является' List ', и вы пытаетесь добавить к нему' AlcoholTestViewModel'. –
juharr
Попробуйте заменить 'ToList()' на 'ToList()' –
Спасибо, @IvanStoev. Это исправило это! Не возражаете ли вы бросить это в ответ, и я приму это? – Alex