2010-03-05 4 views
2

many-to-one 관계가있는 몇 개의 테이블이 있는데 쉼표로 구분 된 문자열이 포함 된 문자열을 만들려고합니다. 다음과 같이LINQ to Entities : 다 대일 관계에서 쉼표로 구분 된 문자열 만들기

것은 이제 국가와 도시를 부르 자 - 도시 테이블 State.ID에 FK가 있으며, 미국은 국가에 속하는 :

var foo = from item in _ctx.State 
      where item.country_id == country_id 
      select 
      new { id = item.ID, 
       names = item.Name + ": " + String.Join(", ", 
       (from c in _entity.City 
        where c.State.ID == item.ID 
        select c.City_Name).ToArray()) 
      }; 
    return Json(foo.ToList()); 

내가 좋아하는 뭔가를 찾고 있어요 :

[{ID = 3 명 = "CA : A, B, C '}, { ID = 5 명 ="OR : D, E'} 등

(this 질문에서)를 String.Join으로 거기, 나는 얻는다 :

0 엔티티

LINQ 방법은 ' 는 (선택 System.String,이 선택 System.String [])에 가입 선택 System.String' 방법을 인식하지 않고,이 방법은 저장 식으로 변환 될 수 없다.

이 방법이 있습니까?

var foo = from item in _ctx.State 
      where item.country_id == country_id 
      select 
      new 
      { 
       id = item.ID, 
       names = item.Name, 
       cities = from c in item.City select c.Name 
      }; 
var bar = from item in foo.AsEnumerable 
      select new 
      { 
       id = item.id, 
       names = item.names + ": " + String.Join(", ", item.cities.ToArray()) 
      }; 
return Json(bar.ToList()); 

편집 :

답변

2

당신은 개체 (String.Join 및 다른 방법)으로 엔티티 (DB 물건)과 LINQ에 LINQ에 검색어를 분할해야이 가까이 - 내가 곧 길이 도시를 변경해야했다 그것이 City 객체가 아닌 문자열의 배열이되도록 선택되었습니다.