EF Core怪问题之查询最后一条记录竟抛出LastOrDefault异常?
使用EF Core查询数据库中满足条件的最后一条记录: 使用LINQ中的LastOrDefault, 代码如下:
1 public async Task<Onu> Find(string sn)
2 {
3 //return await _onuContext.Onus.FirstOrDefaultAsync(o => o.Serialnum == sn);
4 return _onuContext.Onus.LastOrDefault(o => o.Serialnum.EndsWith(sn.ToUpper()));
5 }
在运行时发生异常:

查询MSDN: 并非所有的LINQ方法都支持实体类查询:
解决办法:
先将实体类查询转为Enumerable类型再使用LastOrDefault即可:
public async Task<Onu> Find(string sn)
{
//return await _onuContext.Onus.FirstOrDefaultAsync(o => o.Serialnum == sn);
return _onuContext.Onus.Where(o => o.Serialnum.EndsWith(sn.ToUpper())).ToArray().LastOrDefault();
}
赞 (0)
