-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 プロバイダー (Entity Framework) 向けの優れたチュートリアルを読むことをお勧めします。 ?)。

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

クエリ全体に「ドット表記」を使用したことに注意してください。これは、 や などを使用しているときに作業が簡単になるためAsEnumerableToListあり、クエリ式はとにかく複雑ではありませんでした。

このAsEnumerable呼び出しは、クエリを LINQ to Objects に "シフト" するため、クエリから SQL への変換部分で SQL への変換を試みる必要がなくなりMapper.ToHotelObjectます (失敗すると思います)。

于 2012-08-20T08:10:23.353 に答える
0

List<BO.Hotel>ホテルの代わりに関数が返されるようにし、それに応じてクエリとマッパー関数を調整する必要があります。

于 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 に答える