无法使用linq过滤查询获取IEnumerable类型

时间:2013-07-13 14:23:08

标签: linq ienumerable where-clause

我一直在寻找与以下代码相关的问题。实际上我想选择过滤的记录,但它给了我0条记录。我尝试了以下内容。请帮助我..

public static IEnumerable<PostModel> GetPostData(string cat)
{
var data = new LinqClassDataContext();                                                   IEnumerable<PostModel> pm;
pm=data.PostTables.Where(Post => new PostModel
{ CategoryName= Post.CategoryName}.Equals(cat)).Select
(Post => new PostModel 
{     PostID = (int)Post.PostID, 
      PostSubject = Post.PostSubject,
      PostAuthor = Post.PostAuthor, 
      PostDate = Post.PostDate, 
      PostContent = Post.PostContent, 
      CategoryName = Post.CategoryName
});
}

1 个答案:

答案 0 :(得分:2)

为什么你的PostModel类对象是Equals string cat? 也许你的意思是:

data.PostTables.Where(Post => Post.CategoryName == cat)

即使你在PostModel上覆盖了Equals方法,我认为你应该使用上面提到的第一行,因为它更明显。

同样在查询结束时,您应该调用.ToList()方法来启动它。你应该在方法中创建上下文之后处理上下文。

public static IEnumerable<PostModel> GetPostData(string cat)
{
   var data = new LinqClassDataContext();                                                   
   var pm = data.PostTables.Where(post => post.CategoryName == cat)
                         .Select(Post => new PostModel 
                                {     
                                   PostID = (int)Post.PostID, 
                                   PostSubject = Post.PostSubject,
                                   PostAuthor = Post.PostAuthor, 
                                   PostDate = Post.PostDate, 
                                   PostContent = Post.PostContent, 
                                   CategoryName = Post.CategoryName
                                })
                         .ToList();
   data.Dispose();
   return pm;
}