내 linq where 절에 문제가 있습니다. 코드 :값은 null이 될 수 없습니다. paramName : LINQ의 값
public IEnumerable<SearchResult> Search(int? orderId, string customer, string car, int? type, int? status, string sortBy = null)
{
var records = Orders.Where(x => (x.Id == orderId || orderId == null) &&
(string.Format("{0} {1}", x.Customer.Name, x.Customer.Surname).Contains(customer) || string.IsNullOrEmpty(customer)) &&
(string.Format("{0} {1}", x.Car.Mark, x.Car.Model).Contains(car) || string.IsNullOrEmpty(car)) &&
(x.OrderType.Id == type || type == null) &&
(x.OrderStatus.Id == status || status == null));
}
문제는 주문 ID, 유형 및 상태입니다. VS 제목에서 예외를 throw합니다 : value null, paramName : value 수 없습니다. 검색을 시작할 때 이러한 매개 변수 (orderId, type, status)가 초기화시 null이어야하기 때문에 이상합니다.
"초기화시 null이어야합니다"는 무엇을 의미합니까? – Steve
호기심 중에 '주문'의 유형은 무엇입니까? 특히, 그것은'IQueryable <>'을 상속합니까? 여하튼 당신이 null'customer' 또는'car'를'.Contains()'에 전달했기 때문에 오류는 거의 확실합니다. 'IsNullOrEmpty()'체크를 먼저 넣고'Contains()'를 호출하여 이것을 피할 수있다. –
나는 필터링을 시작할 때 이러한 매개 변수가 가치가 없다는 것을 의미합니다. 왜냐하면 모든 레코드를 갖고 싶어하기 때문입니다. – rico