Linq:varName.hits.select(x => x.document).toList()
问题描述:
我有以下代码: Linq:varName.hits.select(x => x.document).toList()
我正在检索基于最新版本的记录列表。但是这段代码并不指示要返回的记录数量。我可以检查上述代码是否返回从数据库中检索到的任何数量的记录?var predicate = PredicateBuilder.True().And(p => p["_latestversion"] == "1"); predicate = predicate.And(GetDefaultTemplatePredicatesExpression());
if(!string.IsNullOrEmpty(path)) predicate = predicate.And(GetPathPredicateExpression(path)); var results = context.GetQueryable().Where(predicate).OrderByDescending(p=> p.Views).GetResults(); if (results != null) { if (results.Hits.Any()) { return results.Hits.Select(x => x.Document).ToList(); } }
答
我不清楚那个GetResults()
调用会返回什么(是你定义的扩展方法吗?我找不到任何与.NET框架相关的东西),这使得很难做出一个关于其他事情的坚定声明。
我相信你可以分割线:
var results = context.GetQueryable<ArticleItem>()
.Where(predicate)
.OrderByDescending(p=> p.Views)
.GetResults();
成三行:
var query = context.GetQueryable<ArticleItem>()
.Where(predicate)
.OrderByDescending(p=> p.Views);
var count = query.Count();
var results = query.GetResults();
我想这会给你会想要。
您可以随时询问Count()方法返回的行数。否则我不明白你的问题。 – Rob
那么,首先,这不是你的*实际*代码,因为你的外壳是错的。但假设它成功了,它将具有与'varName.hits'一样多的元素。当然,每次迭代'varName.hits'时可能会有所不同。你的问题很不明确 - 请更具体。 –
请参考上面的代码。我已编辑包含更多。 – snowfrost