0
使用this answer中提到的某些邏輯,我使用此代碼在幾個表上執行外連接。我知道三個連接中的一個會產生一個MyField值。但是,在我的select語句中,我調用了一個構造函數,而我只想使用不爲null的MyField值。不可空字段上的Linq外連接
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'類型的操作數「。這適用於可空數據類型,例如字符串,但不適用於此「日期」字段。
除了將數據庫列更改爲可爲空的DateTime之外,您是否知道解決此問題的方法?
在數據庫中未設置**時,將** DateTime **字段默認爲** DateTime.MinValue **。在這種情況下,像這樣醜陋的東西可以工作:**(a.date!= DateTime.MinValue?a.date:(l.date!= DateTime.MinValue?l.date:n.date))** –
@ThomasC .G.deVilhena:我嘗試了這個解決方案,並且得到了System.Reflection.TargetOfInvocationException。 –