繁体   English   中英

LINQ2SQL:如何声明var类型的成员变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM