私はON句で複数の条件を持つ左外部結合を使用するLINQでクエリを実装しようとしています。ON句の複数の条件を持つLINQ結合
私は、次の2つの表プロジェクト(PROJECTID、プロジェクト名)とタスク(タスクID、PROJECTID、TaskName:指定、完了)の例を使用します。私はすべてのプロジェクトの完全なリストをそれぞれのタスクで表示したいが、完了したタスクだけを見たい。
フィルターを使用することはできませんCompleted == true
これは、完了したタスクを持っていないプロジェクトを除外するためです。代わりに、プロジェクトの完全なリストが表示されるように、結合のON句にCompleted == true
を追加しますが、完了したタスクのみが表示されます。タスクが完了していないプロジェクトには、タスクのnull値を持つ単一の行が表示されます。
ここにクエリの基礎があります。
from t1 in Projects
join t2 in Tasks
on new { t1.ProjectID} equals new { t2.ProjectID } into j1
from j2 in j1.DefaultIfEmpty()
select new { t1.ProjectName, t2.TaskName }
&& t2.Completed == true
をon節に追加するにはどうすればよいですか?
これを行う方法に関するLINQのドキュメントは見つかりませんでした。
それを行うための非自明な方法のように思えること。私はそれが何をすると思われるか分からない。 – svick
@svick - 匿名型を使用すると、複数の条件に参加することができます。両方のタイプでプロパティ名が一致していることを確認するだけです。混乱がどこから来ているのか分かりませんか? – Aducci
混乱は、 ''と ''で結ばれた2つの等間隔として、実際にはより意味をなさないということです。と私のポイントを証明するために、あなたのコードは間違っています。それが機能するには、左側に 'true'、右側に' t2.Complete'がなければなりません。 – svick