2017-10-19 70 views
0

我有以下代碼: 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(); } }

我正在檢索基於最新版本的記錄列表。但是這段代碼並不指示要返回的記錄數量。我可以檢查上述代碼是否返回從數據庫中檢索到的任何數量的記錄?

+0

您可以隨時詢問Count()方法返回的行數。否則我不明白你的問題。 – Rob

+0

那麼,首先,這不是你的*實際*代碼,因爲你的外殼是錯的。但假設它成功了,它將具有與'varName.hits'一樣多的元素。當然,每次迭代'varName.hits'時可能會有所不同。你的問題很不明確 - 請更具體。 –

+0

請參考上面的代碼。我已編輯包含更多。 – snowfrost

回答

0

我不清楚那個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(); 

我想這會給你會想要。

相關問題