c# - LINQ 查询问题,序列不包含任何元素

标签 c# asp.net linq entity-framework-4

我试图更新表中的单个记录,但是当我运行 .Firstordefault() 时,我收到错误:“对象引用未设置为对象的实例。” ,如果将它与 .First() 一起使用,我会得到“序列不包含任何元素”。

在另一个地方使用它,它工作正常,但这次它导致错误。

代码如下:

public class AllownceDetails
{
  public int ta_id{get;set;}
  public int tvrid{get;set;}
  public DateTime ofDate{get;set;}
  public string status{get;set;}
  public string userid {get;set;}
}
//Update Method
public void Update(AllownceDetails Allowncedtl)
    {

        var ta = (from a in ce.tbl_tvrallownce
                  where a.tvrid == Allowncedtl.tvrid 
                   //error: Sequence contains no elements

                  select a).SingleOrDefault();

        ta.status = Allowncedtl.status; 
                   //error:Object reference not set to an instance of an object
        ce.SaveChanges();


    }

最佳答案

查询不得返回任何数据。在 SQL 数据库上运行分析器以查看正在执行的物理查询,并尝试针对数据库手动执行它以查看数据的外观。您可能必须调整查询(或数据)才能获得所需的结果。

“序列不包含任何元素”基本上是 LINQ 告诉您您正在尝试引用列表中没有任何元素的元素的方式。因此调用 .First().Single() 找不到任何东西,因此出现错误。

当您将调用更改为 .FirstOrDefault().SingleOrDefault() 时,它将使用该类型的“默认”值,供引用types 默认为 null。因此,如果您将某些内容设置为 null,然后尝试对其调用方法,您将得到 object reference not set to an instance of an object

关于c# - LINQ 查询问题,序列不包含任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9907963/

相关文章:

c# - 如何更快/更智能地读取文本文件?

c# - Application.ThreadException 与 AppDomain.UnhandledException

c# - 为什么 C# LINQ 表达式必须以 Select 或 Group By 子句结尾,而在 VB.Net 中没有这样的限制

c# - 如何使用 C# 读取包含数组的 json 文件并对其执行 LINQ 查询?

asp.net - 企业安全应用程序 block 与 ASP.NET 中的 MembershipProvider 结合使用

.net - 如何在 WIX 安装项目中添加 ASP.NET web 项目作为引用?

asp.net 更新面板无法正常工作

c# - C# 中 Linq 查询中的枚举条件

c# - LINQ 中的内部联接有问题

c# - 无法将类型 'Task<System.Collections.Generic.IEnumerable<IClass>>' 隐式转换为 'System.Collections.Generic.IEnumerable<IClass>