如何根据模型的属性进行查询?

时间:2013-04-18 10:57:16

标签: c# linq entity-framework-4.3

为简洁起见,假设我有一个名为参与者的模型,如

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)。

1 个答案:

答案 0 :(得分:0)

您可以结合使用反射,循环浏览属性和dynamic linq来构建where谓词。

下面是一个简单的例子,作为概念的起点。

目前它使用null作为表示我们不想要where子句的值,但是如果你有一个值类型属性(如int)那么你可以添加像{{{{}}这样的属性。 1}}或者其他东西,并在循环浏览属性时检查它。

创建一个新的控制台应用程序并用此替换program.cs然后将样本中的动态linq文件添加到项目中:

[FilterIgnore]