質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

LINQ to SQL

LINQ to SQLは.NET Framework 3.5のコンポーネントで、リレーショナル データをオブジェクトとして管理するためのランタイム インフラストラクチャを提供します。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

Q&A

解決済

1回答

1967閲覧

SQL文をEntityFrameworkのリンク式に書き換えたい

widget11

総合スコア221

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

LINQ to SQL

LINQ to SQLは.NET Framework 3.5のコンポーネントで、リレーショナル データをオブジェクトとして管理するためのランタイム インフラストラクチャを提供します。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

0グッド

1クリップ

投稿2019/03/28 04:10

select t1.EntryId, t1.SelectionId, t2.InterviewedCount from t_selection as t1 left join (select SelectionId, count(*) InterviewedCount from t_interviewer group by SelectionId) as t2 on t1.SelectionId = t2.SelectionId where t1.EntryId in (1481, 1414, 283);

このクエリをEntityFrameWorkのクエリ式に書き換えたいのですがやり方がわかりません。
このクエリはt_selectionという選考テーブルにt_interviewerというテーブルを外部結合させ、新たにinterviewerdCountという
選考を担当した人の数をカウントしたカラムを結合させるクエリです。
上の式は新たにテーブルを生成するようなクエリで以下のような実行結果になります。

![イメージ説明

ER図はこちらです
イメージ説明

自身でクエリ式を組み立ててみたのですが var countedTable = (from selection in _base.phoenixDB.t_selection join interviwer in _base.phoenixDB.t_interviewer on selection.SelectionId equals interviwer.SelectionId select new { EntryId = selection.EntryId, SelectionId = selection.SelectionId, InterviewerdCount = }).ToList();

InterviewerdCount =の箇所をどう組み立ててもエラーが出てしまいますどのように実装すればよいでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2019/03/28 04:34

Entity Framework なら 通常 LINQ to Entities を使っていると思うのですが、LINQ to SQL を使っているのですか?
guest

回答1

0

ベストアンサー

Entity Data Model であらかじめ必要なアソシエーションを設定しておけば、ほぼ終わりです。

C#

1db.t_selection 2 .Where(a => entryIdList.Contains(a.EntryId)) 3 .Select(a => new 4 { 5 a.EntryId, 6 a.SelectionId, 7 InterviewedCount = a.t_interviewer != null ? (int?)a.t_interviewer.Count() : null, 8 }) 9 .ToArray();

投稿2019/03/28 05:01

編集2019/03/28 05:02
x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

widget11

2019/03/28 06:00

ありがとうございます! 解決致しました!
widget11

2019/03/28 06:01

ありがとうございます。 解決致しました!containsメソッドを使うんですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問