Linq和var关键字

时间:2015-07-23 12:46:58

标签: c# linq

我该如何解决这种情况?我想使用全局' var latestTests',我可以使用对象还是其他东西?如果我还需要更复杂的情况,这只是一个通用的linqstatement。

 var latestTests =  ????

 if(all == "") {
    latestTests = db.PatientChecklists.Where(x =>
    x.PatientMedicine.Patient.ClinicId == clinicID).OrderBy(x =>         
    x.NextTest).Take(10);
  }
  else {
    latestTests = db.PatientChecklists.Where(x =>
    x.PatientMedicine.Patient.ClinicId == clinicID).OrderBy(x =>         
    x.NextTest);
   }

3 个答案:

答案 0 :(得分:13)

那里有一些冗余代码。怎么样:

var latestTests = db.PatientChecklists
        .Where(x => x.PatientMedicine.Patient.ClinicId == clinicID)
        .OrderBy(x => x.NextTest);

if(all == "")
{
    latestTests = latestTests.Take(10);
}

编辑: 在更复杂的情况下,我不会在外部范围内初始化var latestTests。要么不使用var,要么在单独的方法中移动整个事物。

答案 1 :(得分:9)

你不能在这里使用var,你需要声明对象类型:

IOrderedEnumerable<Foo> latestTests;

尽管@AlexH指出,您可以简化查询并完全不需要外部范围声明。

答案 2 :(得分:1)

利用conditional operator

var latestTests = all != "" ? 
    db.PatientChecklists.Where(x => x.PatientMedicine.Patient.ClinicId == clinicID).OrderBy(x => x.NextTest).Take(10) :
    db.PatientChecklists.Where(x => x.PatientMedicine.Patient.ClinicId == clinicID).OrderBy(x => x.NextTest);