インメモリ エンティティを 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 へのキャスト形式が含まれています。キーを作成するには?