【问题标题】:error "Sequence contains no elements"错误“序列不包含任何元素”
【发布时间】:2012-10-29 13:46:08
【问题描述】:

我使用了下面的 linq 查询代码,但它返回“序列不包含元素”,我确信应该返回一项。

代码如下:

tblDocTranstoCon doctranstocon =_DataContext.tblDocTranstoCons
                       .Single(dtcon => (dtcon.Docid == _DocID)
                                     && (dtcon.Transid==e.TransmittoconID)
                                     && (dtcon.Transid==e.TransID));

【问题讨论】:

  • 您的比较是否有误?您将dtcon.Transide.TransmittoconIDe.TransID 进行比较 - 我猜第二个是对的,但也许第一个是指dtcon 上的错误字段?
  • 为什么条件(dtcon.Transid ==)是两次?
  • 谢谢,问题似乎是“为什么条件(dtcon.Transid ==)是两次?”

标签: c# linq


【解决方案1】:

如果没有退货,您应该使用SingleOrDefault

tblDocTranstoCon doctranstocon =_DataContext.tblDocTranstoCons
   .SingleOrDefault(dtcon => (dtcon.Docid == _DocID)
                   && (dtcon.Transid == e.TransmittoconID)
                   && (dtcon.Transid == e.TransID));

【讨论】:

    【解决方案2】:

    要解决此问题,请将方法 Single() 调用替换为 SingleOrDefault() 方法。如果没有与过滤条件匹配的源记录,则 SingleOrDefault() 方法将返回空值。见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 2017-11-21
      • 2015-02-19
      • 1970-01-01
      • 2016-12-06
      相关资源
      最近更新 更多