.dll中出现'System.NullReferenceException'类型的第一次机会异常。我无法弄清楚为什么all.FindAll(...)每次抛出此异常。原因是因为lambda表达式没有短路AND OR条件导致Name,BillingCity和/ BillingStreet导致这种情况?此外,我对我目前的解决方案采取了更好的方法(比如工作=))。
public async Task<JsonResult> AutoCompleteSearch(string term)
{
// Filter accounts
List<Account> all = await GetAccounts();
List<Account> filtered = new List<Account>();
filtered = all.FindAll(e =>
((e.Name != null) && e.Name.ToLower().Contains(term.ToLower())) ||
((e.BillingCity != null) && e.BillingCity.ToLower().Contains(term.ToLower())) ||
((e.BillingStreet != null) && e.BillingState.ToLower().Contains(term.ToLower())));
return Json(filtered, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:1)
您似乎有一个简单的拼写错误,可能来自intellisense自动完成。
在这一行:
((e.BillingStreet != null) && e.BillingState.ToLower().Contains(term.ToLower())));
您检查BillingStreet
null
,然后尝试访问BillingState
媒体资源。其中一个可能不是你的意思。
答案 1 :(得分:0)
你永远不会检查e.BillingState。添加
&& e.BillingState
之前
&& e.BillingState.ToLower()