2014-03-30 60 views
1

這裏是我的中繼器來獲得第一書評:後面我用這樣的事情來獲得的第一次審查LINQ - 如何獲得單()審覈

<asp:Repeater ID="Repeater2" runat="server"> 
    <ItemTemplate> 
     <asp:Repeater ID="Repeater1" runat="server" DataSource='<%# Eval("Reviews") %>' ItemType="ELibraryModel.Review"> 
     <ItemTemplate> 
     <div class="new_prod_box"> 
      <div class="new_prod_bg"> 
       <asp:HyperLink ID="HyperLink1" CssClass="thumb" runat="server" ImageUrl='<%# String.Format("../Images/books/{0}.jpg", Item.Id.ToString()) %>' Text='<%# Item.Title %>' NavigateUrl='<%# "../books/bookdetails.aspx?reviewId=" + Item.Id.ToString() %>'></asp:HyperLink> 
       <a><asp:Label ID="DescriptionLabel" runat="server" Text='<%# Item.Title %>' /></a> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

上的代碼和它的工作原理:

using (ELibraryEntities entities = new ELibraryEntities()) 
{ 
    var firstBook = (from books in entities.Books.Include("Reviews") 
        orderby books.Category 
        select new { books.Reviews }).Take(1); 
    Repeater2.DataSource = firstBook; 
    Repeater2.DataBind(); 
} 

如何根據評論ID獲取我想要的評論。

我想是這樣的:

using (ELibraryEntities entities = new ELibraryEntities()) 
{ 
    var review = (from books in entities.Books.Include("Reviews") 
        where books.Id == 13 
        orderby books.Category 
        select new { books.Reviews }).Single(); 
    Repeater2.DataSource = review; 
    Repeater2.DataBind(); 
} 

,但它不工作。問題是我無法訪問評論表的ID。 books.Id == 13屬於書籍表。

我需要更改背後的代碼和中繼器的代碼?

謝謝。

+0

你錯在第一單。 –

+0

爲什麼你不能訪問評論表的ID?我無法得到它。 – Christos

+0

我的意思是我不知道如何訪問它。如果我嘗試:'從entities.Reviews.Include(「Book」)中讀書,那麼我可以訪問它,但'orderby books.Category'變得無法訪問。 – user2969489

回答

0

試試這個:

using (ELibraryEntities entities = new ELibraryEntities()) 
{ 
    var review = (from review in entities.Reviews 
        where review.BookId == BookId 
        select review).FirstOrDefault(); 
    Repeater2.DataSource = review; 
    Repeater2.DataBind(); 
} 

使用上面的代碼中,你從審查,已爲這本書,ID爲給定的一個,BookId書面得到的第一次審查。

注意:如果本書至少有一篇評論,您將獲得第一篇評論。否則,查詢的結果將爲空。

有關FirstOrDefault方法如何工作的更多說明,請查看here