この回答で言及されているいくつかのロジックを使用して、このコードを使用していくつかのテーブルで外部結合を実行しています。3 つの結合のうちの 1 つが MyField 値を生成することはわかっています。ただし、select ステートメントでは、コンストラクターを呼び出しており、null ではない MyField 値のみを使用したいと考えています。
public static MyResult GetMyResult(string MyString)
{
var result = (from w in context.TABLE_ONEs
from a in context.TABLE_TWOs.Where(x => x.field1 == w.field1).DefaultIfEmpty()
from l in context.TABLE_THREEs.Where(y => y.field1 == w.field1).DefaultIfEmpty()
from n in context.TABLE_FOURs.Where(z => z.field1 == w.field1).DefaultIfEmpty()
select new MyResult(w.someField,
w.someOtherField,
(a.date ?? l.date ?? n.date))
).First();
return result;
}
ただし、「演算子 '??' というコンパイル エラーが発生します。タイプ 'System.DateTime' および 'System.DateTime' のオペランドには適用できません。これは、文字列などの null 許容データ型では正常に機能しますが、この「日付」フィールドでは機能しません。
データベース列をnull許容のDateTimeに変更する以外に、これを修正する方法を知っていますか?