当前位置:  开发笔记 > 编程语言 > 正文

c#linq中的转换为值类型'System.Single'失败

如何解决《c#linq中的转换为值类型'System.Single'失败》经验,为你挑选了1个好方法。



1> musefan..:

导致该问题的原因是您没有任何与where子句逻辑匹配的数据(在本例中ReInstatementfalse),这意味着返回零结果.

当执行Sumon on no results时,它将希望使用null结果,但返回类型Sum将期望与您的float类型匹配(因此它失败).

为了能够Sum在没有结果的情况下,您可以使用DefaultIfEmpty如下函数,这意味着永远不会有任何nullSum要担心:

var results = _ctx.TestPackages.Where( i => i.LineCheckState && 
                                            i.TestState && 
                                            i.Flushing && 
                                            i.Drying && 
                                            i.ReInstatement && 
                                            i.CleaningState);

// Sum the results, and in the event of a null value, assign 0f instead.
newObj.TotalSizeDone = results.Select(i => i.Size)
                            .DefaultIfEmpty(0f)
                            .Sum();

或者,您可以使用以下内容,以便Sum知道返回可以为空的类型(然后可以与之合并??):

newObj.TotalSizeDone = results.Sum(i => (float?)i.Size) ?? 0f;

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有