【发布时间】:2016-04-15 18:54:52
【问题描述】:
我正在尝试使用 Entity Framework 6 (EF) 在 Visual Studio 2015 上的 WPF 中使用 LINQ 获得结果。结果需要出现在一个ListView 中以供员工测试。我有两个 EF 实体:DrugTests 和 AlcoholTests。在我的项目中,我有一些视图模型可以将它们映射到:DrugTestViewModel 和 AlcoholTestViewModel,它们都派生自接口 ITestViewModel。
这两个虚拟机共享许多属性,同时也有自己独特的属性(因此需要两个实体)。我正在使用 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<DrugTestViewModel>,而您正在尝试将AlcoholTestViewModel添加到其中。 -
尝试用
ToList<ITestViewModel>()替换ToList() -
@Alex 老实说,我不介意,但有一次你好心问:)
-
@IvanStoev 只是想提高您的声誉并帮助其他人更好地注意到答案:)
-
@Alex 我非常感谢!
标签: c# .net wpf entity-framework linq