我用的EntityFramework,我查询和返回使用匿名类型的部分数据。 目前我使用IQueryable<dynamic>
,它的工作原理,但我想知道这是做正确的方式,或者有一些其他的返回数据类型,我是不知道的。
public IQueryable<dynamic> FindUpcomingEventsCustom(int daysFuture)
{
DateTime dateTimeNow = DateTime.UtcNow;
DateTime dateTimeFuture = dateTimeNow.AddDays(daysFuture);
return db.EventCustoms.Where(x => x.DataTimeStart > dateTimeNow & x.DataTimeStart <= dateTimeFuture)
.Select(y => new { y.EventId, y.EventTitle, y.DataTimeStart});
}
通常情况下,你可以使用匿名类型里面只有一个方法的范围。 你不回匿名类型给调用者。 如果这是你想要做什么,你应该创建一个类,并返回:
public class Event
{
private readonly int _eventId;
private readonly string _eventTitle;
private readonly DateTime _dateTimeStart;
public Event(int eventId, string eventTitle, DateTime dateTimeStart)
{
_eventId = eventId;
_eventTitle = eventTitle;
_dateTimeStart = dateTimeStart;
}
public int EventId { get { return _eventId; } }
public string EventTitle { get { return _eventTitle; } }
public DateTime DateTimeStart{ get { return _dateTimeStart; } }
}
public IQueryable<Event> FindUpcomingEventsCustom(int daysFuture)
{
DateTime dateTimeNow = DateTime.UtcNow;
DateTime dateTimeFuture = dateTimeNow.AddDays(daysFuture);
return db.EventCustoms
.Where(x => x.DataTimeStart > dateTimeNow
&& x.DataTimeStart <= dateTimeFuture)
.Select(y => new Event(y.EventId, y.EventTitle, y.DataTimeStart));
}