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