我有一个这样的课程
public class foo
{
private void getThread()
{
var AllThreads = from sc in db.ScreenCycles
join s in db.Screens on sc.ScreenID equals s.ScreenID
select s;
}
}
我想让AllThreads变量成为类变量而不是方法变量。像这样......
public class foo
{
var AllThreads;
private void getThread()
{
AllThreads = from sc in db.ScreenCycles
join s in db.Screens on sc.ScreenID equals s.ScreenID
select s;
}
}
但是我不会让我声明一个类型为var。
的类变量如何实现这一目标?
答案 0 :(得分:2)
你可以这样做:
public class foo {
IEnumerable<string> AllThreads;
private void getThread() {
AllThreads = (from sc in db.ScreenCycles
join s in db.Screens on sc.ScreenID equals s.ScreenID
select s.Screen1 + " " + sc.Thread);
}
}
根据Joel的建议更新。
答案 1 :(得分:2)
答案 2 :(得分:1)
var只能用作本地声明。如果要使用从LINQ表达式返回的类型,则必须构建对象。
答案 3 :(得分:1)
要保留原始代码,请尝试使用
public class foo
IEnumerable<ScreenCycles> AllThreads;
private void getThread()
{
AllThreads = from sc in db.ScreenCycles
join s in db.Screens on sc.ScreenID equals s.ScreenID
select s;
}
}
答案 4 :(得分:0)
初始var定义了一个匿名类。为了做你所拥有的定义课程的内容。
但是......你可能只是这样做:
List<string> AllThreads;
答案 5 :(得分:0)
您无法在班级使用var
。如果不立即初始化,则需要提供显式类型。
假设“s”的类型名称为“Screen”:
public class foo
{
IEnumerable<Screen> AllThreads;
private void getThread()
{
AllThreads = from sc in db.ScreenCycles
join s in db.Screens on sc.ScreenID equals s.ScreenID
select s;
}
}
答案 6 :(得分:0)
正如许多人所说,你不能使用var。重构您的代码以使用Linq类型。
public class foo
{
ScreenCycle[] allThreads;
private void getThread()
{
allThreads = (from sc in db.ScreenCycles join s in db.Screens on sc.ScreenID
equals s.ScreenID select s).ToArray();
}
}
答案 7 :(得分:0)
好的,这不是一个答案,只是stackoverflow问题的一个相对新手,这个线程很好地说明了。
这个网站上的代码标记工具非常严肃......嗯,独一无二。在这个特殊情况下我不明白的是,为什么我们所有的评论代码块都非常长?这是OP做的事情吗?我在前面的例子中厌倦了各种编辑,由于某种原因,我的代码所在的文本框比它的内容长得多。 (IE 8)