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) の場合TextBoxはOrderId1CustomerNameつDateTimePickers、CreationDateRange(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'