[英]LINQ2SQL: How do I declare a member variable of type var?
我有这样的课
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类型的类变量。
我该如何实现?
您可以这样做:
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的建议进行了更新。
var只能用作本地声明。 如果要使用从LINQ表达式返回的类型,则必须已构建一个对象。
要保留原始代码,请尝试此操作
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;
}
}
最初的var定义了一个匿名类。 为了做什么,您必须定义类。
但是...您可能只是这样做:
List<string> AllThreads;
您不能在类级别使用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;
}
}
正如许多人所说,您不能使用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();
}
}
好的,这不是一个答案,只是stackoverflow问题的一个相对较新的问题,该线程对此进行了很好的说明。
这个网站上的代码标记工具非常认真...嗯,独一无二。 在这种特殊情况下,我不明白的是,为什么我们所有的注释代码块都非常长? OP做了什么? 我对先前的示例进行了各种修改,由于某种原因,我的代码所在的文本框比其内容长得多。 (IE 8)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.