• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Sequence contains no elements : LINQ error 原

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0701/4195.html

>>>

1.错误意思:

出现错误的原因是:你要从一个null中取的数据。

 

2.错误的处理

1,使用FirstOrDefault() 来代替 First()

2、使用SingleOrDefault 来代替 Single

3、使用 ElementAtOrDefault 来代替 .ElementAt

4、如果是在Average, Sum等中报错

var items = new int[] {1, 2, 3, 4, 5};
Double avg = items.Average();  
//替换为:
Double avg = items.Where(x=>x > 10).Average(); 

Double avg = items.Where(x=>x > 10).DefaultIfEmpty().Average(); 

=======================

用DefaultIfEmpty代替FirstOrDefault,不然查询结果为空时会报Sequence contains no elements的inner exception

decimal dversion = ctx.Spcspechis.Where(a => a.Factory == sFactory && a.ChartId == sChartId && a.ReleaseFlag == "Y"
                   && a.ApplyStartTime.CompareTo(sApplyStartTime) <= 0 && ((a.ApplyEndTime == " ") || (a.ApplyEndTime.CompareTo(sApplyEndTime) >= 0
                   && a.ReleaseTime.CompareTo(sReleaseTime) <= 0))).Select(a => new { a.Version }).DefaultIfEmpty().Max(t=>t.Version);

查出子查询的结果,再代入总的 

 spcspechis = ctx.Spcspechis.Where(t => t.Factory == sFactory && t.ChartId == sChartId && t.Version .CompareTo(dversion).FirstOrDefault();

 

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!