【发布时间】:2017-05-15 14:05:12
【问题描述】:
在 Linq to Entities 中,不能使用标准 c# 方法修改“select”子句中的结果,需要规范函数。
我需要调用这样的查询:
CoreEntities.Contracts.Select(
c=> new {
c.Name,
c.Type,
Role = MapToRole(c));
private string MapToRole(Contract contract) {
switch(contract.Type) {
case: CTypes.Main: return "somerole1";break;
case: CTypes.Secondary: return "somerole2";break;
// ...
default: break;
}
return "none";
}
“MapToRole”是一个 C# 方法,创建只是为了整理 linq 查询。
有没有办法创建一个可以被实体框架“linq to Entity”解析器接受的自定义 c# 函数?
我找到了查询过滤器的解决方案,但没有找到数据格式化的解决方案。
【问题讨论】:
-
能否将您的 MapToRole 方法添加到问题中?
-
在 MapToRole 中有简单的 if/else/switch 语句。
-
如果您可以将 MapToRole 转换为 Lamba 表达式(使用条件运算符等),那么您可以使用 LINQKit 将 lambda 映射到查询中。
标签: linq linq-to-entities