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(); }