linq返回什么数据类型

本文关键字:数据类型 什么 返回 linq | 更新日期: 2023-09-27 18:29:42

我正在尝试编写一个函数,该函数将从单个表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;
   }

linq返回什么数据类型

在我看来像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);
}

只是尝试一下,但您不想选择汽车吗。模型,而不是整辆车?

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在Deferred Execution上工作。

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

它只是返回查询。但不是查询的实际结果。

你必须获取结果,通过将其转换为数组或列表等

好的起点在这里

LINQ查询没有单一的数据类型,因为它取决于上下文。

在您的情况下,您选择的是"Car",因此数据类型将是IQueryable。正如注释中所指出的,您可以将鼠标悬停在任何var(而不仅仅是那些涉及LINQ查询的var)上以获取数据类型。