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