1

WinForm アプリケーションでユーザー条件に基づいてフィルターされるリストを表示するフォームを作成しています。一般的なリストがあり、、、、IList<Order>などのOrder プロパティがあるとします。OrderIdCustomerNameCreationDate

public Class Order
{
 public string OrderId {get; set;}
 public string CustomerName {get; set;}
 public DateTime CreationDate {get; set;}
}

また、ユーザーがリストをフィルタリングできるように、フォームにいくつかのコントロールを配置しました。Range(FromDateTimePicker , ToDateTimePicker) の場合TextBoxOrderId1CustomerNameDateTimePickersCreationDateRange(FromDateTimePicker,ToDateTimePicker) の場合は 2 つです。

また、述語変数を次のように定義しました。

Func<Order, bool> predicate = null; 

predicateユーザー入力値に従ってどのようにビルドできますか?

私はこのコードを書き込もうとしました:

if (tbOrderId.Text != string.Empty)
{
   string orderId;
   predicate = t=>t.OrderId == orderId;
}
if(tbCustomerName.Text != string.Empty)
{
   string customer = tbCustomerName.Text;
   if(predicate!=null)
      predicate = predicate && (t=>t.CustomerName == customer);
   else
      predicate = (t=>t.CustomerName == customer);
}
....

しかし、私はこのエラーが発生します:

Operator '&&' cannot be applied to operands of type 'System.Func<Order,bool>' and 'lambda expression'
4

1 に答える 1