我正在构建一个表单来显示一个列表,该列表将根据我的 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;}
}
另外,我在表单中放置了一些控件,以便用户可以过滤列表。一个TextBox
代表OrderId
另一个CustomerName
,两个DateTimePickers
代表CreationDate
Range(FromDateTimePicker,ToDateTimePicker)。
我也将谓词变量定义为:
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'