我已经扩展了我的实体以实现其类型的特定接口(interface)。我正在尝试执行以下查询:
var results = from x in context.MyEntityTable
where x.AProperty == AValue
select x;
return results.Count() > 0 ? results.Cast<IApplicationEntity>().ToList() : null;
但是,我不断收到以下错误:
“LINQ to Entities 仅支持转换实体数据模型原始类型”
基本上我想做的总是将结果从原始实体类型转换为它实现的接口(interface)的通用列表。
这可能吗?
最佳答案
您可以在客户端进行转换,通过调用 AsEnumerable
绕过 Entity Framework 查询翻译层扩展方法:
return results.Any()
? results.AsEnumerable().Cast<IApplicationEntity>().ToList()
: null;
但是,最好颠倒执行
Count
的顺序。查看:var list = results.AsEnumerable().Cast<IApplicationEntity>().ToList();
return list.Count == 0 ? null : list;
关于linq - 将 linq 结果转换为 List<MyInterface>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361085/