WinForm アプリケーションでユーザー条件に基づいてフィルターされるリストを表示するフォームを作成しています。一般的なリストがあり、、、、IList<Order>
などのOrder
プロパティがあるとします。OrderId
CustomerName
CreationDate
public Class Order
{
public string OrderId {get; set;}
public string CustomerName {get; set;}
public DateTime CreationDate {get; set;}
}
また、ユーザーがリストをフィルタリングできるように、フォームにいくつかのコントロールを配置しました。Range(FromDateTimePicker , ToDateTimePicker) の場合TextBox
はOrderId
1CustomerName
つDateTimePickers
、CreationDate
Range(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'