我想使用LINQ查询返回存储在数据库中的对象列表。
我尝试了以下
public BO.Hotel getHotels()
{
TripBagEntities db = new TripBagEntities();
var hotels = (from m in db.HotelEntities
where m.id < 10
select m).ToList().First();
return Mapper.ToHotelObject(hotels);
}
这只返回列表中的第一项。如何退回整个清单?
提前致谢
答案 0 :(得分:2)
首先,根据评论,您应该准确了解现有代码的每一行的作用。 (您还应该尝试遵循.NET命名约定。)如果您猜测代码的哪一部分做了什么,那么阅读一个面向您正在使用的LINQ提供程序的良好教程是一个好主意(实体框架) ?)。
我们真的不知道Mapper.ToHotelObject
做了什么,或者是否已经存在转换整个序列的方法。这应该工作:
public List<BO.Hotel> GetHotels()
{
// Note: you may want a using statement here...
TripBagEntities db = new TripBagEntities();
var hotels = db.HotelEntities
.Where(m => m.id < 10)
.AsEnumerable()
.Select(Mapper.ToHotelObject)
.ToList();
}
或者方法组转换不起作用:
public List<BO.Hotel> GetHotels()
{
// Note: you may want a using statement here...
TripBagEntities db = new TripBagEntities();
var hotels = db.HotelEntities
.Where(m => m.id < 10)
.AsEnumerable()
.Select(m => Mapper.ToHotelObject(m))
.ToList();
}
请注意,我对整个查询使用了“点符号”,因为当您使用AsEnumerable
和ToList
等内容时,它会让生活更简单,并且您的查询表达式并不复杂反正。
AsEnumerable
调用“将”查询转换为LINQ to Objects,以便查询到SQL转换部分不需要尝试将Mapper.ToHotelObject
转换为SQL,我认为这样做失败。
答案 1 :(得分:0)
您需要让函数返回List<BO.Hotel>
而不是酒店,并相应地调整查询和Mapper函数。
答案 2 :(得分:0)
public List<BO.Hotel> getHotels()
{
TripBagEntities db = new TripBagEntities();
return (from m in db.HotelEntities
where m.id < 10
select Mapper.ToHotelObject(m)).ToList();
}