2013-07-13 2 views
0

다음 코드와 관련된 문제를 발견했습니다. 실제로 필터링 된 레코드를 선택하고 싶지만 0 레코드를 제공합니다. 나는 다음을 시도했다. 제발 도와주세요 ..linq 필터링 된 쿼리를 사용하여 IEnumerable 형식을 가져올 수 없습니다.

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 
}); 
} 

답변

2

이유가 될 것입니다 귀하의 PostModel 클래스 객체가 문자열 고양이 같음? 은 아마 당신은 의미 :

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

을 당신은 내가 당신이 더 분명하기 때문에 내가 위에서 meantioned 줄을 사용한다고 생각 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; 
} 
+0

감사원이 제안을 사용하여 해결책을 찾았습니다. –

관련 문제