linq表达式:
var results = (from a in fileInfo join b in ivSuccessData on new
{ InvoiceNo = a.InvoiceNo.ToLower (), a.InvoiceDate, a.VendorCode }
equals new
{ InvoiceNo = b.Reference.ToLower ().Replace ("…", "").Replace (".", ""),InvoiceDate = b.DocumentDate.ToString("yyyyMMdd"), VendorCode = b.VendorCode }
select a).ToList ();
问题出在:
b.DocumentDate.ToString("yyyyMMdd")
两个table间关联,条件栏位类型不一样需要转换,然后就出现这个错误了,请问应该怎么解?
豆子不多,见谅啦~!
可以select一个对象里,在这里可以转换
select中是可以转换的,但select的实体需要先执行一次,例如:
ivSuccessData.Select(...);
var results = (from a in fileInfo join b in ivSuccessData.AsEnumerable() on new
{ InvoiceNo = a.InvoiceNo.ToLower (), a.InvoiceDate, a.VendorCode }
equals new
{ InvoiceNo = b.Reference.ToLower ().Replace ("…", "").Replace (".", ""),InvoiceDate = b.DocumentDate, VendorCode = b.VendorCode }
select a).ToList ();
Linq 写出了SQL地狱般的感觉,这是要兼容旧的数据库结构还是咋的。
实际场景让人优雅不起来啊~/哭
判斷是否有值再ToString?
试过判断是否为空再tostring, 没有用。
@Result_For:
InvoiceDate = string.IsNullOrWhiteSpace(b.DocumentDate) ? "" : b.DocumentDate.ToString("yyyyMMdd")
這樣不行?
那應該不是值的問題
@RosonJ: 感觉是在netcore 3.1中,Linq提供器无法转换toString引起的,用Convert.Tostring()也不行。唉~
建议改进一下排版,支持 markdown 语法
– dudu 4年前@dudu: 谢谢~
– Result_For 4年前