2013-10-13 3 views
0

나는 태그를 선택하여 Tags과 함께 Post을 가지고 있습니다. 난 그냥 간단한 문자열로 모든 태그를 출력 싶습니다.이 총계가 작동하지 않는 이유는 무엇입니까?

내가 얻을 이러한 오류

블록의 반환 형식 중 일부는 대리자 반환 형식에 암시 적으로 변환하지 않기 때문에 유형 'System.Func을'위임 람다 식 변환 할 수 없습니다

수 없습니다 암시 'int'를 'char'로 변환하십시오. 명시 적 변환 (당신은 캐스트를 누락?) 존재

var posts = _db.Posts.OrderByDescending(x => x.CreatedDateTime).AsEnumerable().Select(post => new 
{ 
    post.Id, 
    post.Title, 
    Tags = post.Tags.SelectMany(x => x.Name).Aggregate((current, next) => current + ',' + next) // error 
}); 

나는 또한 " "을 사용하려고, 심지어 변수의 구분 기호를 저장하지만, 아무것도 도움이되지했습니다. 여기서 내가 뭘 잘못하고 있니?

+0

@pasty? 'post.Tags.SelectMany (x => x.Name) .Aggregate ((현재, 다음) => string.Format ("{0} {1}", 현재, 다음))'아무것도 변경, 나는 같은 오류가 발생합니다 . – sed

+0

예,하지만 이해가되지 않습니다 - 죄송합니다, 나는 잘못된 경로에있었습니다. – pasty

답변

2

SelectManySelect으로 바꿉니다.

+0

작동! 왜 내가 선택했는지 모르겠다. – sed

+0

그래, 나는 -1이 어디에서 왔는지 궁금해. – AgentFire

1

SelectMany는 목록의 목록을 반환하는 쿼리를 병합합니다. 즉, 바로 가기 조인과 유사하므로 오류가 발생합니다. 당신이해야 할 일은 Select로 대체하는 것입니다. 여기 코드가 작동합니다 :

var posts = _db.Posts.OrderByDescending(x => x.CreatedDateTime).AsEnumerable().Select(post => new 
{ 
    post.Id, 
    post.Title, 
    Tags = post.Tags.Select(x => x.Name).Aggregate((current, next) => current + ',' + next) // error 
}); 
관련 문제