var ID, x,y
switch(ItemTypeNo)
{
case ItemType.A :
ID = from s in cntx.Tablo1
break;
case ItemType.B :
ID = from s in cntx.Tablo2
break;
case ItemType.C :
ID = from s in cntx.Tablo3
break;
}
答案 0 :(得分:3)
您只能使用var
进行内联初始化,而不是。您需要相应地键入ID
,因为var
的单类型仅在Tablo1
,Tablo2
和{{1}时才有效是相同的类型(似乎不太可能)。
你需要做什么?
是在这里有效的场景;当从每个选择一个共同类型时;我们假设所有主键都有Tablo3
:
int
然而,在一般情况下......并非如此。您可以键入IQueryable<int> ids;
switch(ItemTypeNo)
{
case ItemType.A : ids= from s in cntx.Tablo1 select s.Id; break;
case ItemType.B : ids= from s in cntx.Tablo2 select s.Id; break;
case ItemType.C : ids= from s in cntx.Tablo3 select s.Id; break;
default: throw new InvalidOperationException();
}
作为非通用ID
,但说实话,这不会让您做很多有趣的事情。并且IQueryable
与LINQ不能很好地协作(即使它确实如此,这将是一个黑客攻击)。
答案 1 :(得分:0)
如果没有初始化,则无法声明匿名类型“var”。 一旦“var”被初始化(一旦从使用中推断出来),它就不能在其整个生命周期中被改变。
答案 2 :(得分:0)
您可以将ID声明为IQueryable
,因为这是通用IQueryable<T>
的基本类型