右のSales
テーブルにレコードがなく、またSales.Fallthrough == false && Sales.Date == null
の場合にのみ、データを返そうとしているlinqクエリがあります。C#Linq左外側結合WHERE句
これは私のクエリの基本であり、私はこれで多くの異なることを試しましたが、必要なデータを返すことができませんでした。私が試したものは、Sales
がない場合、またはWERE caluseと一致していても両方ではない場合にのみ、レコードを返すようです。
from cr in efContext.Cases
join si in efContext.Sales on cr.CaseId equals si.CaseId into sicr
from sicr in (from si in sicr
where si == null
select si
).DefaultIfEmpty()
where cr.Withdrawn == false
select new
{
CaseId = cr.CaseId,
PropertyAddress = extension.PropertyAddressTownFormat(cr.PropertyAddress1, cr.PropertyTown),
TargetExchangeDate = sicr.TargetExchangeDate == null ? null : sicr1.TargetExchangeDate,
ActualExchangeDate = sicr.ActualExchangeDate,
}).ToList();
EDIT はほとんど情報を逃しました。 Sales
にレコードがありますが、WHERE句と一致しない場合は、レコードがないかのように左側と右側が返されます。
ありがとうございました。
私はそれを見ましたが、私のクエリはそれに基づいていますが、必要なデータは返されません。私は少しの情報が欠けているので、質問を編集しました。 – JBoom
「セールスにレコードがありますが、WHERE句と一致しない場合はどうしますか?」とはどういう意味ですか? '' cr.Withdrawn == false''の場合、クエリが結合プロダクトを返すべきであることを意味しますか? – oddparity
ごめんなさい。したがって、「営業」にレコードがない場合は、「ケース」からすべてのレコードを戻す必要があります。 'Sales'にレコードがあれば' WHERE'節をフィルタリングします 'Sales.Fallthrough == false && Sales.Date == null'しかし、WHERE節と一致しなければレコードを返します「事件」。それは理にかなっていますか? – JBoom