我需要按发布日期降序对存储在数据库中的文章进行排序,然后使用来记录文章之后的前20条记录Id == 100
。
这就是我要对Linq进行的操作:
IQueryable<Article> articles =
db.Articles
.OrderByDescending(a => a.PublicationDate)
.SkipWhile(a => a.Id != 100)
.Take(20);
但是,这会生成NotSupportedException,因为SkipWhile
Linq to
Sql不支持(请参见此处)。
一种可能的解决方案是执行查询,然后SkipWhile
使用Linq将其应用于对象:
IEnumerable<ArticleDescriptor> articles =
db.Articles
.OrderByDescending(a => a.PublicationDate)
.ToList()
.SkipWhile(a => a.Article.Id != 100)
.Take(20);
但这意味着我需要先将整个有序列表加载到内存中,然后再用读取20篇文章Id == 100
。
有没有办法避免这种巨大的内存消耗?
一般来说,在SQL中实现此目标的最佳方法是什么?
根据我在列名中的猜测,PublicationDate
如果没有更改,则可以在两个单独的查询中执行此操作:
PublicationDate
的Article
与Id == 100
就像是:
var thresholdDate = db.Articles.Single(a => a.Id == 100).PublicationDate;
var articles =
db.Articles
.Where(a => a.PublicationDate <= thresholdDate)
.OrderByDescending(a => a.PublicationDate)
.Take(20);
甚至可能是LINQ to SQL可以将其转换为:
var articles =
db.Articles
.Where(a => a.PublicationDate
<= db.Articles.Single(aa => aa.Id == 100).PublicationDate)
.OrderByDescending(a => a.PublicationDate)
.Take(20);
但这可能太复杂了。试试看。
问题内容: 我有两个实体: 保存首选项时,我具有accountId,但没有Account实体。在这种情况下,如何保存首选项? 加载帐户实体并在首选项上进行设置?对我来说,这似乎是对数据库的错误旅行。 是否具有一个可持久保存的accountId字段并使Account字段为只读?同时拥有一个accountId字段和一个Account字段似乎多余吗? 使用NamedQuery保留首选项?我希望只是通用地
rbindlist做的正是我需要的,但'do.call'做不到! do.Call不是我想要的
问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul
据我所知,您可以通过以下方式使用PIL获取图像大小 但是,我希望获得图像的宽度和高度,而不必将图像加载到内存中。可能吗?我只做图像大小的统计,不关心图像内容。我只是想让我的处理速度更快。
我的老师想让我通过迭代找到用户10个输入的中位数。 这就是我使用迭代来查找总和,奇数数,最大值和质数数的方式。但我一直坚持要找到中位数。