如何在if条件之外使用此'下载'?
if (rblFinancialYear.Checked)
{
var download = (from appraisals in dbClientContext.PmsAppraisalActivityMasters
select new
{
appraisalActivityMasteId = appraisals.AppraisalActivityMasterID,
empId = appraisals.EmpID,
})
Where(r => r.kpiStartDate >= dtFYStart && r.kpiStartDate <= dtFYEnd).ToList();
}
如果我使用返回类型返回意味着我在这里使用哪种数据类型。
答案 0 :(得分:1)
然后在if
条件之外创建具有类似
type download = null;
if (rblFinancialYear.Checked)
{
//rest code
}
看起来您正在投射Anomymous
类型,如下所示,因此除了使用var
之外别无他法,并且使用var
创建变量是非法的。
select new
{
appraisalActivityMasteId = appraisals.AppraisalActivityMasterID,
empId = appraisals.EmpID,
})
这个解决方案是创建一个DTO或ViewModel并使用它来代替
public class TestViewModel
{
public int appraisalActivityMasteId {get; set; }
public int empId {get; set; }
}
//创建变量
List<TestViewModel> model = null;
现在您可以像
一样使用它model = (from appraisals in dbClientContext.PmsAppraisalActivityMasters
select new TestViewModel
{
appraisalActivityMasteId = appraisals.AppraisalActivityMasterID,
empId = appraisals.EmpID,
})
Where(r => r.kpiStartDate >= dtFYStart && r.kpiStartDate <= dtFYEnd).ToList();
}
答案 1 :(得分:0)
你应该像这样创建单独的类:
public class MyDTO
{
public int appraisalActivityMasteId {get; set;}
public int empId {get; set;}
}
Maby你应该使用不同的属性类型。然后在像这样的代码中使用它:
List<MyDTO> download = new List<MyDTO>();
if (rblFinancialYear.Checked)
{
download = (from appraisals in dbClientContext.PmsAppraisalActivityMasters
select new MyDTO //note this
{
appraisalActivityMasteId = appraisals.AppraisalActivityMasterID,
empId = appraisals.EmpID,
})
.Where(r => r.kpiStartDate >= dtFYStart
&& r.kpiStartDate <= dtFYEnd).ToList();
}
答案 2 :(得分:0)
您可以尝试将下载变量设为对象类型,然后将其投射到您计划使用时使用的类型。
object download;
if(TRUE)
{
download = (from appraisals in dbClientContext.PmsAppraisalActivityMasters
select new
{
appraisalActivityMasteId = appraisals.AppraisalActivityMasterID,
empId = appraisals.EmpID,
})
Where(r => r.kpiStartDate >= dtFYStart && r.kpiStartDate <= dtFYEnd).ToList();
}
可能会工作。
至于您当前的实现,如上面的代码段示例所示。无法访问 IF语句之外的下载变量。它超出了范围。