簡體   English   中英

linq返回什么數據類型?

[英]What datatype does linq return?

我正在嘗試編寫一個函數,該函數將從單個表Cars返回所有可出租的Cars Cars具有carId (int), carManufacturer (varchar), carModel (varchar)和carTaken (bool)。

但是我在弄清楚函數GetAvailableCars()應該返回哪種數據類型時遇到了問題。

我想將所有可租用的汽車( carTaken == false )以格式化的方式放置到Web客戶端的簡單頁面上的textArea中。 我雖然string[]是一個不錯的選擇。

public string[] GetAllAvailableCars()
   {
       var result =
           from car in carsDB.Cars
           where (car.carTaken == false)
           select car;
       return result;
   }

在我看來, IQueryable<Car>至少是可變result

如果要返回字符串數組,則類似於:

(from car in carsDB.Cars
 where (car.carTaken == false)
 select car.carModel).ToArray();

應該管用

編輯:根據作者的要求,選擇所有列:

(from car in carsDB.Cars
 where (car.carTaken == false)
 select String.Format(
     "ID: {0}; Manufacturer: {1}; Model: {2}",
     car.carId,
     car.carManufacturer,
     car.carModel
 )).ToArray();

我無法針對您的Cars類進行編譯,但是我認為以上是正確的。 讓我知道您是否遇到任何錯誤。

查詢返回數據對象Car 使用此代碼獲取所有名稱:

public string[] GetAllAvailableCars()
{
    return carsDB.Cars
       .Where(x => x.carTaken == false) // filter cars
       .Select(car => car.model) // select what we need
       .ToArray(); // Execute query
}

關於什么:

public IQueryable<string> GetAllAvailableCars()
{
    return carsDB.Cars.Where(c => c.carTaken == false).Select(c => c.model);
}

這只是一個刺,但您不想選擇汽車。模型,而不是整個汽車嗎?

LINQ負責Deferred Execution

from car in carsDB.Cars
       where (car.carTaken == false)
       select car;

它只是返回查詢。 但不是查詢的實際結果。

您必須通過將結果轉換為數組或列表等來獲取結果。

好的起點在這里

var result = from car in carsDB.Cars
                         where car.carTaken == false
                         select car;

結果是汽車的IEnumerable

var result = (from car in carsDB.Cars
                             where car.carTaken == false
                             select car).ToArray();

結果是車[]

對於這樣的特定回報:

var result = from car in carsDB.Cars
                             where car.carTaken == false
                             select new {car.a, car.b};

結果是a,b的IEnumerable

LINQ查詢沒有單一的數據類型,因為它取決於上下文。

在您的情況下,您選擇“汽車”,因此數據類型將為IQueryable。 如注釋中所指出的,您可以將鼠標懸停在任何var上(而不僅僅是涉及LINQ查詢的變量)以獲取數據類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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