[英]How to declare a global variable to be used on a C# expression
我正在這樣做:
protected void btn_Click(object sender, EventArgs e){
var myQuery = from tab1 in Table
where myConditions
select tab1 ;
之后,我將過濾用戶選擇的選項:
myQuery.Where(x => x.someField == someChoice);
工作正常。 但是我想用全局范圍聲明“ myQuery”。
我該怎么辦? 我正在嘗試將行放在類內部和方法之外,但是我不知道應該使用哪種類型:
private someTypeThatIdontKnow myQuery;
TIA。
偷偷摸摸的方法是:
this.myQuery = ...
然后將插入符號放置在myQuery
(它將呈紅色波浪狀表示問題),然后按ctrl + 。 ,然后選擇IDE的報價以生成一個字段:
這將生成正確類型的字段:
現在,在設置MyTable
之后,只需將查詢本身移到所需的任何位置(可能是構造函數)即可。
如果將鼠標懸停在var
關鍵字上,它將告訴您它是什么類型。
然后,您可以使用它來定義類的成員以保存結果。
您可以使用var
關鍵字並獲取類型,然后聲明該類型的變量。
或者,如果出於某種原因您不想這樣做,則可以使用dynamic
類型,但我建議您不要這樣做。
最好的解決方案是讓編譯器使用var
關鍵字推斷類型,然后將該類型顯式用作類成員(即您所指的“全局變量”)。
LINQ查詢返回某種IEnumerable,所以我相信它將
private IEnumerable<TypeOfObjectInYourCollection> myQuery;
使用IQueryable<TableEntity>
,其中TableEntity
是Table
DbSet
對象的類型。
它也可以是IEnumerable<TableEntity>
,這取決於您是針對數據庫還是針對內存中集合運行查詢。
您也可以通過將鼠標懸停在myQuery
查看要使用的類型。
該類型將是類型為tab1
的IQueryable
。
假設您最終調用ToList()
來運行查詢,最終將得到List<tab1>
。 因此,您可以將全局變量聲明為該類型。
我假設tab1
是一個可供您使用的對象列表。
List<tab1> result = new List<tab1>();
protected void btn_Click(object sender, EventArgs e)
{
var myQuery = from tab1 in Table
where myConditions
select tab1;
myQuery.Where(x => x.someField == someChoice);
result = myQuery.ToList();
}
試試EnumerableRowCollection
:
private EnumerableRowCollection query
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.