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