如何在linq中使用var多次?

时间:2010-06-25 08:39:57

标签: c# visual-studio visual-studio-2008 linq


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;

}

3 个答案:

答案 0 :(得分:3)

您只能使用var进行内联初始化,而不是。您需要相应地键入ID,因为var类型仅在Tablo1Tablo2和{{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>的基本类型