です。linq where句に問題があります。コード:値はnullにできません.LAMQの値は
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はtitleのように例外をスローします:valueはnull、paramName:valueは指定できません。検索を開始すると、これらのパラメータ(orderId、type、status)が初期化時にnullでなければならないので、奇妙です。
"初期化時にnullでなければなりません"とは何を意味しますか? – Steve
好奇心の中で「注文」のタイプは何ですか?具体的には、 'IQueryable <>'から継承していますか?いずれにしても、nullの 'customer'または' car'を '.Contains()'に渡すので、エラーはほぼ確実です。 'IsNullOrEmpty()'チェックを最初に入れ、 'Contains()'への呼び出しを短くすることで、これを避けることができます。 –
私は、フィルタリングを開始するとこれらのパラメータに値がないことを意味します。なぜなら、すべてのレコードを保持したいからです。 – rico