我目前有一种情况,我正在使用 Linq to Entities 执行搜索。
如果我想通过客户的参考代码进行搜索,我将使用这种方法:GetClientByReference("A01")
public IQueryable<DataLayer.Client> GetClientByReference(String reference)
{
return new DataLayer.DlClient(this.Entities).GetClientByReference(reference);
}
如果我想按客户姓名搜索,我将使用以下方法:GetClientByName("Joe")
public IQueryable<DataLayer.Client> GetClientByName(String name)
{
return new DataLayer.DlClient(this.Entities).GetClientByName(name);
}
显然,就可扩展性而言,这非常糟糕,因为我需要将方法组合在一起,并为每个可搜索字段编写一个(GetClientByDateAndReferenceAndName
??)有没有办法让它更通用?
理想情况下,我希望能够执行以下操作:
GetClient("Reference", "A01")
GetClient("Name", "Joe")
GetClient("Reference", "A01", "Name", "Joe")