我试图更新表中的单个记录,但是当我运行 .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/