• 浪牛三刀   2015/7/4 14:32:00
  • 不能将 Null 值赋给类型为 System.Decimal (不可为 null 的值类型)的成员
  • 关键字: null值 数值型 Decimal
  •  

    问题:不能将 Null 值赋给类型为 System.Decimal (不可为 null 的值类型)的成员。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.InvalidOperationException: 不能将 Null 值赋给类型为 System.Decimal (不可为 null 的值类型)的成员。

    源错误: 

    行 108:            EBiddingDataContext dataContext = new EBiddingDataContext();
    行 109:            var query = from n in dataContext.SupplierQuotations where n.RequestID == requestID && n.UserID == userID.Trim().ToUpper() && n.Type == biddingType && n.GUID == guid.Trim() select n;
    行 110:            totalNetPrice = query.Where(p => p.NetPrice.HasValue&&p.Qty.HasValue).Sum(o=>o.NetPrice.Value*(decimal)o.Qty.Value);
    行 111:            totalPrice = query.Where(p => p.UnitPrice.HasValue && p.Qty.HasValue).Sum(o => o.UnitPrice.Value * (decimal)o.Qty.Value);
    行 112:            return query.ToList();

    源文件: E:\CompanyProject\Com.Kion.CN.Ebidding\Com.Kion.CN.EBidding.BLL\SupplierQuotationBLL.cs    行: 110 

    堆栈跟踪: 

    [InvalidOperationException: 不能将 Null 值赋给类型为 System.Decimal (不可为 null 的值类型)的成员。]
       System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +847
       System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +113
       System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +344
       System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(Expression expression) +29
       System.Linq.Queryable.Sum(IQueryable`1 source, Expression`1 selector) +274
       Com.Kion.CN.EBidding.BLL.SupplierQuotationBLL.GetQuotationList(Int32 requestID, String userID, String biddingType, String guid, Decimal& totalPrice, Decimal& totalNetPrice) in E:\CompanyProject\Com.Kion.CN.Ebidding\Com.Kion.CN.EBidding.BLL\SupplierQuotationBLL.cs:110
       Com.Kion.CN.EBidding.WebInter.Admin.ViewQuotationForm.BindGridView() in E:\CompanyProject\Com.Kion.CN.Ebidding\Com.Kion.CN.EBidding.WebInter\Admin\ViewQuotationForm.aspx.cs:34
       Com.Kion.CN.EBidding.WebInter.Admin.ViewQuotationForm.Page_Load(Object sender, EventArgs e) in E:\CompanyProject\Com.Kion.CN.Ebidding\Com.Kion.CN.EBidding.WebInter\Admin\ViewQuotationForm.aspx.cs:27
       System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
       System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
       System.Web.UI.Control.OnLoad(EventArgs e) +99
       System.Web.UI.Control.LoadRecursive() +50
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
    


    版本信息: Microsoft .NET Framework 版本:2.0.50727.5477; ASP.NET 版本:2.0.50727.5479

大家的回答
    浪牛三刀  回复时间: 2015/7/4 14:42:00
    出现这个错误是因为你的数据库中存在Null值的数据,所以你你可以先做一个空值的判断: totalNetPrice = query.Sum(o=>(o.NetPrice.HasValue?o.NetPrice.Value:0)*(decimal)(o.Qty.HasValue?o.Qty.Value:0)); totalPrice = query.Sum(o => (o.UnitPrice.HasValue?o.UnitPrice.Value:0) * (decimal)(o.Qty.HasValue?o.Qty.Value:0));
页数: 1 - 1 (共1 条内容)
Prev
[1]
Next
  •   我来回答
  • 注册用户登录后才能发表评论,请 登录注册
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 相关话题
  • 暂无相关话题哦