0

我想将内存中的实体与数据库表中的数据进行匹配,并返回一个新的内存中 DTO,其中包含匹配信息的子集。现在,匹配涉及两列,因此我正在动态构建一个新键。只要我在构建密钥之前执行查询,有效地使用Linq-To-Objects进行匹配,这就行得通。

当不立即执行查询时,我会收到此MSDN 文章所述的运行时异常。

这是我的代码和数据模型,经过简化。我有

  • 房间(如IEnumerable<Room>,已经在内存中)
  • 区域(如IEnumerable<Room>,已在内存中)
  • 警报(来自数据库,来自上下文的 IQueryable)

警报与区域和位置标识相关联。房间可以有多个区域,并且有一个 LocationId。

我想建立一组发生在一组房间中的警报。这涉及将警报的区域和 LocationsId 与每个房间的 LocationId 和区域进行匹配。

from area in allAreas
let alarmKey = area.AreaName + area.Room.LocationId //AreaName is String, LocationId is integer
//....

但是,此行涉及一个不受支持的将 int 转换为 String 的形式。如何创建密钥?

4

1 回答 1

2

如果你不介意一些前导空格,LocationId你可以这样做

let alarmKey = area.AreaName + 
               SqlFunctions.StringConvert((double)area.Room.LocationId)

SqlFunctionsSystem.Data.Objects.SqlClient.

于 2013-07-29T08:09:18.497 回答