SELECT Meter.SerialNumber as serial,
SupplyPoint.Id as supplypoint,
SupplyType.Id as supplytype,
SupplyType.Name as supplytypename
FROM Meter
INNER JOIN SupplyPoint ON Meter.SupplyPointId = SupplyPoint.Id
INNER JOIN SupplyType ON SupplyPoint.SupplyTypeId = SupplyType.Id;
このクエリを使用して、シリアルに基づいてメーターの供給タイプを見つけることができます。今まで私はこの関数を書いています:LINQを使用してSQLデータベースを照会しています
var query = from meters in db.Meters
join supplyPoint in db.SupplyPoints on meters.SupplyPointId
equals supplyPoint.Id
join supplyType in db.SupplyTypes on supplyPoint.SupplyTypeId equals
supplyType.Id
select new { serial = meters.SerialNumber, type = supplyType.Name };
foreach (var meter in query)
{
if (meter.serial == serial)
return meter.type;
}
return "Meter Type Not Specified";`
私はFindType(文字列シリアル)を呼び出すと、その型を返します。誰もそのようなクエリを変換するためのより良いコードを提案することはできますか? LINQの詳細を知るための方向性も歓迎します。
これまでに何を試しましたか?あなたのデータベーステーブルはどのように見えますか? Entity Frameworkを使用してデータコンテキストを設定しましたか? – slugster
あなたの変換はうまく見えますが、通常はLINQを使って答えを見つけることもできます: 'var ans =(meter.serial == serial select meterのquery from meter).SingleOrDefault(); return(meter == null)? "メータータイプが指定されていません":meter.type; ' – NetMage