2

かなり恥ずかしい思いをしているので、Linq-To-SQLクエリをPOCOにマップするための最良の方法を尋ね/決定したいと思います。現時点ではEFを使用する立場にないため、Linq-To-SQLを使用します。

今のところ、私は次のような簡単なクラスを持っています:

public class DiaryEvent
{
    public Int64 ID { get; set; }
    public string ResourceCalendarID { get; set; }
    public string EventTitle { get; set; }
    public string Location { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public string Description { get; set; }
    public string ResourceColour { get; set; }
    public bool AllDay { get; set; }
}

私のLinq-to-SQL(LTS)クエリは次のとおりです。

DataClassesDataContext db = new DataClassesDataContext();
var qry =
         from b in db.bookings
         select b

データベーステーブルの予約は、DiaryEventクラスとまったく同じように作成できない/作成できないため、現在、次のようにbを繰り返し処理しています。

List<DiaryEvent> EventList = new List<DiaryEvent>();
foreach (booking item in qry)
{
    EventList.Add(new DiaryEvent
    {
        AllDay = false,
        Description = item.bookingDescription,
        ID = item.bookingID,
        StartDate = (DateTime)item.startDate,
        EndDate = (DateTime)item.endDate,
        EventTitle = item.bookingName,
        Location = item.bookingLocation,
        ResourceCalendarID = item.resourceID.ToString(),
        ResourceColour = item.bookingColour.Trim()
    });
}

これは私のデータを正しくマッピングしますが、これがこれを達成するための最速/最も正しい方法であるかどうかはわかりませんか?上記の手法が受け入れられるかどうか、またはそれを改善する方法があるかどうかを確認するためのフィードバックをいただければ幸いです。

PS:公平を期すために、取得するデータが大量になることはありません。特定の状況では、おそらく数百行になります。

前もって感謝します!

4

1 に答える 1

5

私が何かを誤解していない限り、コードを次のように単純化することができます。

var EventList = (from b in db.bookings
                select new DiaryEvent
                {
                    AllDay = false,
                    Description = b.bookingDescription,
                    ID = b.bookingID,
                    StartDate = (DateTime)b.startDate,
                    EndDate = (DateTime)b.endDate,
                    EventTitle = b.bookingName,
                    Location = b.bookingLocation,
                    ResourceCalendarID = b.resourceID.ToString(),
                    ResourceColour = b.bookingColour.Trim()
                }).ToList();

結果は実質的に同じですが、foreachを使用する必要がなくなります。

于 2012-08-05T22:08:06.997 に答える