1

我有这样的课

    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 类型的类变量。

我该如何做到这一点?

4

7 回答 7

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 的建议进行了更新。

于 2009-05-08T21:23:23.767 回答
1

var 只能用作本地声明。如果要使用从 LINQ 表达式返回的类型,则必须构建一个对象。

于 2009-05-08T21:24:59.737 回答
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;
    }

}
于 2009-05-08T21:25:55.477 回答
0

初始 var 定义了一个匿名类。为了做你必须定义的类。

但是......你可能只是这样做:

List<string> AllThreads;
于 2009-05-08T21:24:17.913 回答
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;
    }
}
于 2009-05-08T21:26:44.383 回答
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(); 
    } 
}
于 2009-05-08T21:33:50.043 回答
0

好的,这不是答案,只是 stackoverflow 问题的一个相对新手,这个线程很好地说明了这一点。

这个网站上的代码标记工具是认真的……嗯,独一无二的。在这种特殊情况下,我不明白的是,为什么我们所有的评论代码块都非常长?这是OP做的吗?我厌倦了对前面示例的各种编辑,并且由于某种原因,我的代码所在的文本框比其内容长得多。( 即 8 )

于 2009-05-08T21:40:08.983 回答