C# 将OrderBy子句中的计算值与EF一起使用

C# 将OrderBy子句中的计算值与EF一起使用,c#,linq,lambda,entity-framework-5,C#,Linq,Lambda,Entity Framework 5,我试图在LINQ查询中的OrderBy子句中使用计算值 我得到的错误是: Dbathmetic表达式参数必须具有数字公共类型 我的模型如下所示: public class PostModel { public int ID { get; set; } public DateTime Created { get; set; } public string Title { get; set; } public strin

我试图在LINQ查询中的OrderBy子句中使用计算值

我得到的错误是:

Dbathmetic表达式参数必须具有数字公共类型

我的模型如下所示:

   public class PostModel
    {
        public int ID { get; set; }

        public DateTime Created { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string FilePath { get; set; }
        public float Rank { get; set; }
        public UserProfile Creator { get; set; }

        public bool ShowPost { get; set; }

        public PostModel()
        {
            Created = DateTime.Now;
            Rank = 0;
            ShowPost = false;
        }
    }
我试着用这个来选择帖子:

 var todaysDate = DateTime.Now.AddDays(-10);
 var result = _database.Posts
    .Where(p => p.ShowPost == true)
    .OrderBy(x => ((float)x.Rank) - (((float)(x.Created - todaysDate).TotalDays)) / 2f)
    .Skip(page * StaticVariables.ResponseDataPageSize)
    .Take(StaticVariables.ResponseDataPageSize)
    .Select(s => new
        {
            id = s.ID,
            rank = s.Rank,
            title = s.Title,
            description = s.Description
        }
    );
这是导致错误的顺序。我首先想到的是,我没有将所有变量强制转换为同一类型,但是添加(float)似乎没有帮助

代码的目的是使高级别的职位随着时间的推移而下降,以便显示更新的信息


有什么想法吗?

在LinqToEntity中使用EntityFunction:

EntityFunctions.DiffDays(todaysDate, x.Created)

这很有效。非常感谢。这是对所有LINQ的一般限制吗,请求中没有“正常”计算?