我的方法签名如下。只有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);
}
任何帮助都会非常感激。
答案 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);
}