dataContext.Geo_Countries.Where(c => c.Name.Contains(searchKey))。ToList();当IQueryable不返回任何记录时ToList()抛出异常
当IQueryable返回没有记录我得到一个值为null的异常。
解决方案是什么?
dataContext.Geo_Countries.Where(c => c.Name.Contains(searchKey))。ToList();当IQueryable不返回任何记录时ToList()抛出异常
当IQueryable返回没有记录我得到一个值为null的异常。
解决方案是什么?
我怀疑当没有匹配时你不会遇到问题 - 我怀疑你在数据库中有一行没有Name
值时得到它。要么,要么你正在做别的事情,你没有告诉我们。堆栈跟踪的样子是什么?
异常详细信息:System.ArgumentNullException:值不能为空。 参数名:文字 源错误:69 线:公开名单
@Doozie:searchKey'为空吗? – 2010-12-16 21:56:06
尝试使用上的IQueryable此代码
dataContext.Geo_Countries.Where(c => c.Name != null && c.Name.Contains(searchKey)).ToList();
这没有帮助。我在桌上只有两个记录,这些国家是“美国”和“加拿大”,我的searchKey是“li”。没有空白或空格等的记录等。 – Doozie 2010-12-16 21:18:33
可能是dataContext或Geo_Countries为空。你可以在调试模式下检查它吗? – 2010-12-16 21:22:51
调用ToList()将抛出一个异常,如果代码不正确执行。在下面的例子中,ToList()将抛出一个异常,如果c.Name为null:
void Main()
{
var countries = new [] { new Country() }.AsQueryable();
countries.Where(c => c.Name.Contains("bubba")).ToList();
}
class Country{
public string Name { get; set; }
}
有别的事情上,然后,因为通常你不应该得到的声明空例外您发布除非DataContext的或Geo_Countries为空。您可能需要发布更多信息,例如您正在使用的linq提供程序... – 2010-12-16 20:52:10
您不应该在该问题上遇到异常。尽管您试图评估该查询的结果。 – Vishal 2010-12-16 20:53:09
使用Northwind数据库和LINQPad,我运行这个:'Categories.Where(c => c.CategoryName ==“XXXX”)。ToList()。Dump();'它工作正常,返回一个空的列表。 – 2010-12-16 20:54:21