C# 将EF查询结果强制转换为扩展类型,扩展属性取自EF查询
我有一个标记对象:C# 将EF查询结果强制转换为扩展类型,扩展属性取自EF查询,c#,entity-framework,casting,C#,Entity Framework,Casting,我有一个标记对象: public class Tag { public int TagID { get; set; } public string Name { get; set; } public virtual ICollection<Job> Jobs { get; set; } public Tag() { Jobs = new HashSet<Job>(); } } …我正试图从添加到每个对象
public class Tag
{
public int TagID { get; set; }
public string Name { get; set; }
public virtual ICollection<Job> Jobs { get; set; }
public Tag()
{
Jobs = new HashSet<Job>();
}
}
…我正试图从添加到每个对象的查询中检索具有Count的RecentTag对象列表:
public IEnumerable<RecentTag> GetRecentTags(int numberofdays)
{
var tags = Jobs
.Where(j => j.DatePosted > DateTime.Now.AddDays(-(numberofdays)))
.SelectMany(j => j.Tags)
.GroupBy(t => t, (k, g) => new
{
RecentTag = k,
Count = g.Count()
})
.OrderByDescending(g => g.Count);
// return RecentTags { TagID, Name, Count, Jobs }
}
那么,如何将查询结果转换为RecentTag类型并返回扩展对象列表
任何帮助都将不胜感激。提前谢谢 如果作业实际上是标记的集合,并且它们实际上是RecentTag对象,那么您可以简单地使用Cast方法
var rtags = tags.Cast<RecentTags>;
我最后做了:
public IEnumerable<RecentTag> GetRecentTags(int numberofdays)
{
DateTime startdate = DateTime.Now.AddDays(-(numberofdays));
IEnumerable<RecentTag> tags = Jobs
.Where(j => j.DatePosted > startdate) // Can't use DateTime.Now.AddDays in Entity query apparently
.SelectMany(j => j.Tags)
.GroupBy(t => t, (k, g) => new RecentTag
{
TagID = k.TagID,
Name = k.Name,
Count = g.Count()
})
.OrderByDescending(g => g.Count)
.Select(a => a);
return tags;
}
谢谢作业不是标签的集合。但这是我查询的切入点。
var rtags = tags.Select(x => new RecentTags() { // assign the members });
public IEnumerable<RecentTag> GetRecentTags(int numberofdays)
{
DateTime startdate = DateTime.Now.AddDays(-(numberofdays));
IEnumerable<RecentTag> tags = Jobs
.Where(j => j.DatePosted > startdate) // Can't use DateTime.Now.AddDays in Entity query apparently
.SelectMany(j => j.Tags)
.GroupBy(t => t, (k, g) => new RecentTag
{
TagID = k.TagID,
Name = k.Name,
Count = g.Count()
})
.OrderByDescending(g => g.Count)
.Select(a => a);
return tags;
}