【问题标题】:How to return Multiple Objects in LINQ - asp.net mvc 3如何在 LINQ 中返回多个对象 - asp.net mvc 3
【发布时间】:2011-11-12 12:30:24
【问题描述】:

我被 Linq 查询困在这里......我只是想通过这个非常简单的博客应用程序来接触 MVC。我正在使用这三个实体

发布, 作者详情, CommentsDetails, //* 将来会添加分类、标签

我想使用传递给方法的 searchterm 进行搜索,然后它将在 Post.Title、Post.Body、AuthorDetails.FirstName、AuthorDetails.LastName、CommentsDetails.Comments 中搜索该 searchString 并返回我可以返回的内容投射到列表 ...请看看我到目前为止得到了什么。

代码..

 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)这段代码中的join语句是否正确 2) 以及如何返回类似的内容选择 P 代表 Posts,A 代表 AuthoreDetails,c 代表 CommentsDetails...

【问题讨论】:

  • 不是直接回答您的问题,但您似乎正在尝试向您的网站添加搜索功能...我强烈建议您查看 Lucene for .Net 以添加此类功能。你可以在这里找到一个例子ifdefined.com/blog/post/2009/02/…
  • 您在这里使用联接而不是关联是否有原因?如果您建立从 Post 到 Comments/Authors/Categories/etc 的关联,您可以返回 List 并导航到您视图中的子项,假设您渴望适当地加载子项。听起来您正在经历与我对 www.ThinqLinq.com 所做的大部分相同的事情。您可以在link 的文件下载中查看我的源代码。
  • @jim: 我一定会看看的... :)

标签: jquery asp.net-mvc linq json asp.net-mvc-3


【解决方案1】:

您的问题 #2:您只需像这样返回“新”即可:

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

代替:

select p).ToList();

查找Anonymous Type

【讨论】:

  • Thx...我已经尝试过并再次尝试...它只是给我错误“错误1无法隐式转换类型'System.Collections.Generic.List' 'System.Collections.Generic.List'
  • 问题出在这里.. 我应该在这里做什么.. List getAllPostsBySearchString .. 我也试过 var.. 只是为了让你知道...
  • 是的,因为您的返回类型是 List。根据你的问题是“我怎样才能返回类似......”的匿名类型,你不能返回一个帖子。您可以做到这一点的唯一其他方法是在 Post 对象中设置 AuthorDetail 和 CommentDetail。然后您的返回类型将起作用。检查示例:msdn.microsoft.com/en-us/library/bb425822.aspx
  • 那太好了...工作正常...只是为了确认我的 LINQ 连接没问题?
猜你喜欢
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
相关资源
最近更新 更多