【发布时间】:2015-08-19 13:01:59
【问题描述】:
这是代码:-
如何初始化data?
var data;
if (mode == "view")
{
data = (from a in ctx.tblEmployee
where a.CompanyId == companyId
join b in ctx.tblTO_ShiftSchedule on a.Id equals b.EmployeeId
where b.CompanyId == companyId
select new { a, b, c, d }).ToList();
}
else
{
data = (from a in ctx.tblEmployee
where a.CompanyId == companyId
select new { a, b, c, d }).ToList();
}
【问题讨论】:
-
你不能那样做。
var必须在创建时进行初始化。含义var data = yourlinqexpression;两个匿名类型看起来相同(具有a、b、c、d)这一事实并不能使它们相同。您不能使用一个变量来同时保存两者。如果你想这样做,请声明一个类型化的类。 -
如果必须这样定义,请使用:msdn.microsoft.com/en-us/library/ty67wk28.aspx
-
var关键字只是告诉编译器从赋值表达式的右侧推断变量的类型。在您的代码中,语句var data;没有为data分配任何内容,因此编译器无法推断类型并且您会收到编译时错误。 -
@dman: Your statemant "两个匿名类型看起来相同(具有 a、b、c、d)这一事实并不能使它们相同。你不能使用一个变量两个都持有。” 是假的。使用条件运算符让编译器将两个 linq 表达式解析为一种兼容的匿名类型
new { a, b, c, d}非常好。 -
@InBetween - 我的立场是正确的。你是绝对正确的。
标签: c# asp.net-mvc linq