-6

我想使用 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);
}

这仅返回列表中的第一项。如何返回整个列表?

提前致谢

4

3 回答 3

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();
}

请注意,我对整个查询使用了“点表示法”,因为当您使用AsEnumerableand之类的东西时,它使生活变得更简单ToList,而且您的查询表达式并不复杂。

AsEnumerable调用将查询“转换”为 LINQ to Objects,因此查询到 SQL 的转换部分不需要尝试转换Mapper.ToHotelObject为 SQL,我认为这会失败。

于 2012-08-20T08:10:23.353 回答
0

您需要让您的函数返回List<BO.Hotel>而不是酒店,并相应地调整您的查询和 Mapper 函数。

于 2012-08-20T08:05:01.610 回答
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();
    }
于 2012-08-20T08:05:22.247 回答