linq返回什么数据类型?

时间:2012-04-02 17:07:55

标签: c# database wcf linq

我正在尝试编写一个函数,该函数将从单个表Cars返回所有可用的汽车。 CarscarId(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;
   }

8 个答案:

答案 0 :(得分:6)

对我来说看起来像IQueryable<Car> - 至少这就是变量result

答案 1 :(得分:5)

如果要返回字符串数组,请执行以下操作:

(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课程编译,但我认为以上是正确的。如果您有任何错误,请告诉我。

答案 2 :(得分:2)

查询返回数据对象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
}

答案 3 :(得分:2)

怎么样:

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

答案 4 :(得分:1)

只是刺了一下但你不想选择car.Model,而不是整车?

答案 5 :(得分:1)

LINQ适用于Deferred Execution

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

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

您必须通过将结果转换为数组或列表等来获取结果。

Good Starting point is here

答案 6 :(得分:1)

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

结果是IEnumerable of car

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

结果是car []

具体回报如下:

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

结果是a,b

的IEnumerable

答案 7 :(得分:0)

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

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