LINQ的返回类型与查询报错问题
开发工具与关键技术:VisualStudio .net MVC
作者:落白
撰写时间:2019/06/17
LINQ的方法体里执行了查询后有三种类型可以返回查询结果,分别为Count、Single、Tolist。
- Count是返回查询结果的总条数,常用于新增、修改时判断数据是否重复。
- Single只能返回单条数据,当查询的结果为单条问题时看似人畜无害,还颇为可爱。可一旦查询的结果为空或者查询的结果是两条以上时,这家伙就立马翻脸不认人了,果断给你报个错,把项目卡的动都不能动。
- Tolist是将查询出来的数据列表化,当有多条数据并且需要找到某条数据时只能通过查询结果[n].data的方式将数据找出来,Single只需通过查询结果.data便可找到数据。
当不使用上面三种方式返回查询结果时,如果出现报错那就比较难看出错误,例如
不知道你们能不能看懂,反正这个报错在这里我是看不懂的。所以该换一种找bug的方法,使用try和catch,在catch里面使用声明参数输出来捕捉错误。
try{ }
catch (Exception e)
{
Console.WriteLine(e);
}
这样更容易发现错误,使用这个方法后上面那个报错就变成了下图的形式
将报错展开后初略地翻译了一下,这段话的大概意思是linq toentity识别不到的方法。B_city get_item(int32)方法,该方法不能被翻译成存储表达式,也就是表格以tolist的形式列出来,因为用到了get_item(int32)的方法。虽然我也不知道自己哪里使用了get_item(int32)这个方法。
既然是无法转化为表格的形式,那么我们就直接给它一个强制转化,让表格Tolist一下,后来这个问题就解决了。