可查询匿名类型 [英] IQueryable for Anonymous Types
本文介绍了可查询匿名类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用EntityFramework,我正在使用匿名类型查询和返回部分数据.目前,我正在使用IQueryable<dynamic>
,它可以工作,但是我想知道这是否是正确的方法,或者是否存在我不知道的其他返回数据类型.
I use EntityFramework, I'm querying and returning partial data using Anonymous Types. Currently I'm using IQueryable<dynamic>
, it works, but I would like to know if this is the proper way to do it or if there is some other returning datatype that I'm not aware of.
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});
}
推荐答案
通常,仅在一种方法范围内使用匿名类型.您不会将匿名类型返回给调用方.如果您要这样做,则应创建一个类并返回该类:
Normally, you use anonymous types only inside the scope of one method. You don't return anonymous types to the caller. If that's what you want to do, you should create a class and return that:
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));
}
这篇关于可查询匿名类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文