如何使用Linq to实体构建用于匹配两个查询的自定义键
我希望将内存中的实体与DB表中的数据相匹配,并返回一个新的内存中DTO,其中包含匹配信息的子集。现在,匹配涉及两列,因此我正在动态构建一个新键。这是可行的,只要我在构建键之前执行查询,就可以有效地使用Linq To对象进行匹配 如果不立即执行查询,我会收到一个运行时异常,如下所述 这是我的代码和数据模型,简化了。我有如何使用Linq to实体构建用于匹配两个查询的自定义键,linq,casting,linq-to-entities,key,Linq,Casting,Linq To Entities,Key,我希望将内存中的实体与DB表中的数据相匹配,并返回一个新的内存中DTO,其中包含匹配信息的子集。现在,匹配涉及两列,因此我正在动态构建一个新键。这是可行的,只要我在构建键之前执行查询,就可以有效地使用Linq To对象进行匹配 如果不立即执行查询,我会收到一个运行时异常,如下所述 这是我的代码和数据模型,简化了。我有 房间(作为IEnumerable,已在内存中) 区域(如IEnumerable,已在内存中) 报警(来自数据库,如上下文中的IQueryable) 警报与区域和位置ID关联。房
- 房间(作为
,已在内存中)IEnumerable
- 区域(如
,已在内存中)IEnumerable
- 报警(来自数据库,如上下文中的IQueryable)
from area in allAreas
let alarmKey = area.AreaName + area.Room.LocationId //AreaName is String, LocationId is integer
//....
但是,此行涉及不支持的强制转换形式int-to-String如何创建密钥?如果您不介意在
LocationId
中有许多前导空格,您可以这样做
let alarmKey = area.AreaName +
SqlFunctions.StringConvert((double)area.Room.LocationId)
位于System.Data.Objects.SqlClient
中