我正在尝试编写一个函数,该函数将从单个表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;
}
答案 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;
它只返回查询。但不是查询的实际结果。
您必须通过将结果转换为数组或列表等来获取结果。
答案 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查询的那些)以获取数据类型。