我该如何解决这种情况?我想使用全局' 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);
}
答案 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);