次を使用したLINQ(EF --4.3.1.0を使用)に問題があります。
DateTime? dtcollected = DateTime.TryParse(dateCollected, out dateVal) ? dateVal : (DateTime?)null;
DateTime? dtanalyzed = DateTime.TryParse(dateanalyzed, out dateVal) ? dateVal : (DateTime?)null;
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
&& pw.DateCollected == dtcollected
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
dateCollectedは文字列として入力されたため、null許容のDateTimeに変換する必要があったことに注意してください。日付分析についても同じことが言えます。
私が驚いたのは、companyIdが13であるということです。dtcollectedのnull値。そして、dtanalyzedの値はすでにテーブルにあるので、doesexistがtrueを返すことを期待しますが、falseを返します。
コメントアウトしたら
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
// && pw.DateCollected == dtcollected
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
または置く:
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
&& pw.DateCollected == null
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
それから私は真実を得る。なぜdtcollectedのnull値を理解できないのですか?私は何か間違ったことをしていますか?