2015-12-30 63 views
2

我有一個類的名稱是Tag。每個標籤有一些News,Article和`民意調查'。我想要所有相關文章都有標籤。 做到這一點,我用這個查詢:如何申請跳過並採取包括

public Tag Get(string tagName, int page, int recordsPerPage = 10) 
    { 
     int skip = page * recordsPerPage; 
     return 
      _tags.Where(tag => tag.Title.ToLower() == tagName.ToLower()).Include(row => row.Articles 
      .OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList()) 
      .Include(row => row.News.AsQueryable()).OrderBy(news => news.Code).Skip(skip).Take(recordsPerPage) 
      .Include(row => row.Polls).OrderByDescending(poll => poll.Code).Skip(skip).Take(recordsPerPage).FirstOrDefault(); 
} 

但是當我運行項目我得到這個錯誤:

包含路徑表達式必須引用的類型定義的導航屬性。對於參考導航屬性使用虛線路徑,對集合導航屬性使用Select運算符。

+0

你只是想要一個標記,你爲什麼要調用Skip和Take方法? –

+0

,因爲我通過一個標籤搜索,並且我將通過該標籤獲得所有相關的'新聞','Articlrs'。並且我沒有在第一次顯示所有項目時我每頁加載10條記錄 –

+0

這個問題解決了嗎?我有完全相同的問題。 – Rian

回答

0

你不能傳遞給包括方法,是不是屬性表達式的表情,看你的代碼

.Include(row => row.Articles.OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList()) 


.Include(row => row.News.AsQueryable()) 

正如你所看到的,裏面包括你調用很多方法,它是不是允許。

您必須更改此爲:

.Include(row => row.Articles) 
.Include(row => row.News) 

讓我儘量提高你的代碼,你當前的代碼是這樣的:

_tags.Where(tag => tag.Title.ToLower() == tagName.ToLower()).Include(row => row.Articles 
      .OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList()) 
      .Include(row => row.News.AsQueryable()).OrderBy(news => news.Code).Skip(skip).Take(recordsPerPage) 
      .Include(row => row.Polls).OrderByDescending(poll => poll.Code).Skip(skip).Take(recordsPerPage).FirstOrDefault(); 

讓打破,它在新行

_tags.Where(tag => tag.Title.ToLower() == tagName.ToLower()) 
    .Include(row => row.Articles.OrderByDescending(n => n.Code).Skip(skip).Take(recordsPerPage).ToList()) 
    .Include(row => row.News.AsQueryable()) 
    .OrderBy(news => news.Code) 
    .Skip(skip) 
    .Take(recordsPerPage) 
    .Include(row => row.Polls) 
    .OrderByDescending(poll => poll.Code) 
    .Skip(skip) 
    .Take(recordsPerPage) 
    .FirstOrDefault(); 

如果你只需要一個標籤,你不需要做這個大的方法鏈接,你可以使用這個簡化:

public Tag Get(string tagName, int page, int recordsPerPage = 10) 
{ 
    return _tags.Include(tag => row.Articles).Include(tag => row.News).Include(tag => row.Polls) 
     .OrderBy(tag => news.Code) 
     .FirstOrDefault(tag => tag.Title.ToLower() == tagName.ToLower()); 
} 
+0

當用戶點擊一個標籤時,我應該顯示所有使用Thath標籤的記錄。而對於最佳搜索結果,我不顯示所有搜索結果。我播種了10個10個Recirds每一頁。我使用Skip和Take For This –