为简洁起见,假设我有一个名为参与者的模型,如
public class Participant()
{
public int? ID {get; set;}
public string Name {get; set;}
public DateTime JoinDate {get; set;}
public string Address1 {get; set;}
public string City {get; set;}
public string County {get; set;}
}
public IList<Participant> SearchParticipants(Participant objParticipant)
{
using (Db.Context())
{
//HOW CAN I ACHEIVE THIS? USING EF
//WARNING PSEUDO-CODE / MAGIC FUNCTION (SearchMatches) BELOW
return Db.Entities<Participant>().SearchMatches(objParticipant);
}
}
基本上,我不想构建多个.where(k => k.PropertyName)
个查询。我认为某些PHP MVC框架有这个,传递一个填充了某些属性的对象,一个获取数据库匹配结果的数组(在我们的例子中是IList)。
答案 0 :(得分:0)
您可以结合使用反射,循环浏览属性和dynamic linq来构建where谓词。
下面是一个简单的例子,作为概念的起点。
目前它使用null
作为表示我们不想要where子句的值,但是如果你有一个值类型属性(如int
)那么你可以添加像{{{{}}这样的属性。 1}}或者其他东西,并在循环浏览属性时检查它。
创建一个新的控制台应用程序并用此替换program.cs然后将样本中的动态linq文件添加到项目中:
[FilterIgnore]