Dav*_*.id 2 c# linq linq-to-sql
有一点尴尬,我想问/确定将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; }
}
Run Code Online (Sandbox Code Playgroud)
我的Linq-to-SQL(LTS)查询如下:
DataClassesDataContext db = new DataClassesDataContext();
var qry =
from b in db.bookings
select b
Run Code Online (Sandbox Code Playgroud)
因为数据库表预订不能/不能像我的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()
});
}
Run Code Online (Sandbox Code Playgroud)
这会正确映射我的数据,但我不确定这是否是实现此目的的最快/最正确的方法?如果有任何反馈意见确认上述技术是否可以接受,或者是否有办法改进,我将不胜感激?
PS:公平地说,没有大量的数据需要检索......在任何特定情况下都可能有几百行.
提前致谢!
除非我误解了某些内容,否则你可以将代码简化为:
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();
Run Code Online (Sandbox Code Playgroud)
结果几乎相同,但它可以节省你必须使用foreach.