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;
}