EntityFrameWork查询中的可选参数

时间:2015-06-27 19:55:16

标签: c#-4.0 entity-framework-6 optional-parameters

我的方法签名如下。只有Id是必需的,所有其他三个参数都是选项。我需要在where子句中处理这个问题。如果存在可选的那些,那么我需要将它们添加到where子句,否则查询应该建立在Id上以及可选参数中可用的任何内容

其次,我们可以在下面的查询中指定的比较中使用rowVersion。 (Sql Server中的rowVersion是时间戳)

GetRecords(int  Id, int[] LocationId = null, int PayrollNo = 0, byte[] rowVersion=null)

 {

     var result = this.context.employees.where(x=>x.Id == id && LocationId.Contains(x.locationId) && x.payrollNo ==PayrollNo && x.rowVersion >  rowVersion);

}

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

试试这个:

GetRecords(int  Id, int[] LocationId = null, int PayrollNo = 0, byte[] rowVersion=null)

 {

     var result = this.context.employees.where(x=>x.Id == id);
     if (LocationId != null)
         result = result.Where(x=>LocationId.Contains(x.locationId));
     if (PayrollNo > 0)
         result = result.Where(x=>x.payrollNo == PayrollNo);
     if (rowVersion != null)
         result = result.Where(x=>x.rowVersion >  rowVersion);

}