簡體   English   中英

如何聲明要在C#表達式上使用的全局變量

[英]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> ,其中TableEntityTable DbSet對象的類型。

它也可以是IEnumerable<TableEntity> ,這取決於您是針對數據庫還是針對內存中集合運行查詢。

您也可以通過將鼠標懸停在myQuery查看要使用的類型。

該類型將是類型為tab1IQueryable

假設您最終調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM