0

インメモリ エンティティを DB テーブルのデータと照合し、一致した情報のサブセットを含む新しいインメモリ DTO を返したいと考えています。現在、マッチングには 2 つの列が含まれているため、その場で新しいキーを作成しています。これは、キーを作成する前にクエリを実行し、マッチングにLinq-To-Objects を効果的に使用している限り、機能します。

クエリをすぐに実行しないと、このMSDN 記事で説明されているようにランタイム例外が発生します。

これが私のコードとデータモデルです。私は持っている

  • 部屋 (としてIEnumerable<Room>、既にメモリ内)
  • 領域 (としてIEnumerable<Room>、既にメモリ内)
  • アラーム (DB から、コンテキストから IQueryable として)

アラームは Areas と LocationIds に関連付けられています。部屋は複数のエリアを持つことができ、1 つの LocationId を持つことができます。

一連の部屋で発生した一連のアラームを作成したいと考えています。これには、アラームの Area と LocationsId を各 Room の LocationId と Areas に一致させることが含まれます。

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)

SqlFunctionsですSystem.Data.Objects.SqlClient

于 2013-07-29T08:09:18.497 に答える