2011-09-07 21 views
1

我在這裏與Linq查詢卡在一起......我只是試圖通過這個非常簡單的博客應用程序讓我的手在MVC上..我將這三個實體如何在LINQ中返回多個對象 - asp.net mvc 3

後, AuthorDetails, CommentsDetails,// *在未來將增加類別,標籤

我想用傳遞到方法的搜索關鍵詞,然後將搜索Post.Title該搜索字符串搜索,Post.Body,AuthorDetails.FirstName,AuthorDetails.LastName,CommentsDetails.Comments和waht返回的東西,我可以投到列表<> ...請看看我有什麼去到目前爲止。

代碼..

public List<Post> GetPostBySearchItem(string searchString) 
     { 
      List<Post> getAllPostsBySearchString = (from p in ePost.Posts 
                join a in ePost.AuthorDetails 
                on p.AuthorId equals a.Id 
                join c in ePost.CommentsDetails 
                on a.Id equals c.Id 
                where p.Title.Contains(searchString) || p.PostBody.Contains(searchString) || a.FirstName.Contains(searchString) || c.Comments.Contains(searchString) 
                select p).ToList(); 
      return getAllPostsBySearchString; 

2的問題在這裏 1)加入報表是否在此代碼 2)是正確的,我怎麼能回到這樣的選擇P代表的帖子,一種AuthoreDetails和c對於CommentsDetails ...

+1

不回答你的問題直接,但它好像你正在嘗試的搜索功能添加到您的網站...我會強烈建議看的Lucene對於.NET添加這樣的功能。你可以在這裏找到一個例子http://www.ifdefined.com/blog/post/2009/02/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx – labroo

+0

你有沒有理由使用連接比這裏的協會?如果您建立了發佈到評論/作者/類別/等的關聯,您可以返回列表並導航到您視圖中的子項,假設您正在急切地加載子項。聽起來你正在經歷與我在www.ThinqLinq.com上所做的大部分相同的事情。您可以在[鏈接](http://www.thinqlinq.com/Files.aspx)的文件下載中查看我的源代碼。 –

+0

@jim:我一定會看看它... :) –

回答

2

你的問題#2:你只需有 「新」 回到這樣的:

select new { Post = p, AuthorDetail = a, CommentDetail = c}).ToList() 

,而不是:

select p).ToList(); 

查找Anonymous Type

+0

Thx ...我已經嘗試過,並再次嘗試......它只是給我的錯誤「錯誤不能隱式轉換類型'系統。 Collections.Generic.List '到'System.Collections.Generic.List ' –

+0

問題是在這裏..我應該在這裏做什麼.... 列表 getAllPostsBySearchString ..我也嘗試過var ..只是爲了讓你知道...... –

+0

是的,因爲你的返回類型是列表。根據你的問題是「我怎樣才能返回類似...的東西」這將是匿名類型,你可以't不會返回一個Post,唯一的辦法是在Post對象中有最頂層的AuthorDetail和CommentDetail,然後你的返回類型就可以工作了,檢查一下例子:http:// m sdn.microsoft.com/en-us/library/bb425822.aspx – jmogera