私はASP .NETとLINQにとって非常に新しいので、私の無知について私を許してください。linq/ef:結果を返すために複数のテーブルを接続するクエリを作成する方法は?
私は、リージョンクラスをしました:
public class Region
{
[Key]
public int Region_ID { get; set; }
public string Region_Name { get; set; }
}
とサービスクラス:
public class Service
{
[Key]
public int Service_ID { get; set; }
public string Service_Name { get; set; }
}
そしてregion_IDsとservice_IDsの多くの多マッピングを格納したマッピングクラス:
public class Mapping_ServiceToRegion
{
[Key]
public int Service_ID { get; set; }
public int Region_ID { get; set; }
}
ここでは、指定されたService_IDに基づいてRegion_Nameを出力するAPI関数を作成します。これは私が私のRegionsControllerで、これまで持っているものです。
// GET api/Regions/Service_ID
[ResponseType(typeof(Region))]
public async Task<IHttpActionResult> GetRegion(int id)
{
var region_id = from sr in db.Mapping_ServiceToRegions
where sr.Service_ID == id
select sr.Region_ID;
var region = await db.Regions.Select(r =>
new Region()
{
Region_ID = r.Region_ID,
Region_Name = r.Region_Name
}).SingleOrDefaultAsync(r => r.Region_ID == region_id); //ERROR
if (region == null)
{
return NotFound();
}
return Ok(region);
}
私は取得していますエラーがある:それはデリゲート型でないため
は、ラムダ式を変換できません。
私は私ののregion_id変数がのservice_idに基づいて、複数のregion_idsを持っていることを実感。これを説明するコードを変更するにはどうすればよいですか? r.Region_ID IN region_idと言うのに使用できるIN演算子はありますか?
また、上記のコードは正しく表示されますか?
ありがとうございました。
のようなカスタムのviewmodel/DTOオブジェクトを使用するかする必要があります。現在の編集内容に元の質問が反映されていないため、編集した回答を除外すると投稿された回答が無効になることがあります。それをやめないでください – Rahul
申し訳ありません - 複数の編集セクションを作成するのではなく、あなたや他の人が何が起こっているのかを簡単に確認できると思いました。私は元に戻します。多くの謝罪。 – 90abyss
それは大丈夫です...いいえ、あなたの投稿を編集することはOKですが、新しい編集を追加して元の投稿を上書きしないでください。 – Rahul