簡體   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