首页 新闻 会员 周边 捐助

.net core3.1 linq表达式:Value cannot be null. (Parameter 'right')

0
悬赏园豆:10 [已解决问题] 解决于 2020-04-30 09:59

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间关联,条件栏位类型不一样需要转换,然后就出现这个错误了,请问应该怎么解?
豆子不多,见谅啦~!

又沙又甜的主页 又沙又甜 | 初学一级 | 园豆:120
提问于:2020-04-29 11:15

建议改进一下排版,支持 markdown 语法

dudu 4年前

@dudu: 谢谢~

Result_For 4年前
< >
分享
最佳答案
0

可以select一个对象里,在这里可以转换

收获园豆:10
tenghao510 | 初学一级 |园豆:179 | 2020-04-29 14:29

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 ();
又沙又甜 | 园豆:120 (初学一级) | 2020-04-30 09:57
其他回答(2)
0

Linq 写出了SQL地狱般的感觉,这是要兼容旧的数据库结构还是咋的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2020-04-29 11:27

实际场景让人优雅不起来啊~/哭

支持(0) 反对(0) 又沙又甜 | 园豆:120 (初学一级) | 2020-04-29 11:41
0

判斷是否有值再ToString?

RosonJ | 园豆:4910 (老鸟四级) | 2020-04-29 11:33

试过判断是否为空再tostring, 没有用。

支持(0) 反对(0) 又沙又甜 | 园豆:120 (初学一级) | 2020-04-29 11:36

@Result_For:

InvoiceDate  = string.IsNullOrWhiteSpace(b.DocumentDate) ? "" : b.DocumentDate.ToString("yyyyMMdd")

這樣不行?
那應該不是值的問題

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2020-04-29 11:40

@RosonJ: 感觉是在netcore 3.1中,Linq提供器无法转换toString引起的,用Convert.Tostring()也不行。唉~

支持(0) 反对(0) 又沙又甜 | 园豆:120 (初学一级) | 2020-04-29 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册