我編碼搜索我們正在建設的MVC應用程序,事情是我想通過對象的各種屬性進行搜索。在這種特殊情況下,這是我的預期行爲:Lambda表達式像Sql的值或空
- 如果兩個參數都爲空或全部返回。
- 如果任何參數具有值,請使用Contains選擇由該參數過濾的所有參數。
這是我在做什麼:
var model = _svc.GetList(q => q.Name == (string.IsNullOrEmpty(entity.Name) ? q.Name : entity.Name) &&
q.Description == (string.IsNullOrEmpty(entity.Description) ? q.Description : entity.Description));
這將返回要麼如果兩個字段中的所有元素都爲空或空,或者匹配任何元素完全名稱 AND/OR 說明 。
這裏的東西是我想這表現爲Contains
。
我已經成功地得到這個工作有一個字段:
var model = _svc.GetList(q => (string.IsNullOrEmpty(entity.Name) ||
q.Name.ToLower().Contains(entity.Name.ToLower()))).ToList();
但是當我添加描述字段,它拋出一個NullReferenceException:未將對象引用設置到對象的實例。
只是爲了檢查我已經試過這一點,它沒有工作之一:
var model = (from q in _svc.GetList()
where (string.IsNullOrEmpty(module.Name) ||
q.Name.ToLower().Contains(module.Name.ToLower()))
select q).ToList();
model = (from q in model
where (string.IsNullOrEmpty(module.Description) ||
q.Description.ToLower().Contains(module.Description.ToLower()))
select q).ToList();