2014-09-25 2 views
2

도메인 모델에 직접 액세스하는 대신 viewmodel을 통해 액세스 할 데이터베이스에 테이블이 있습니다. 내 표는 다음과 같습니다 행 필드를 피벗 이외의 열로 변환하는 다른 방법이 있습니까

placename  cafeName 
    x    cafe red 
    x    cafe blue 
    y    cafe red 
    y    cafe blue 
    z    cafe red 
    z    cafe blue 

나는 이런 식으로 뭔가를 원하는 :

placename   cafename cafe name 
    x    cafe red cafe blue 
    y    cafe red cafe blue 
    z    cafe red cafe blue 
내가 이것을 달성 할 수있는 방법

사람이 말해 줄래? 피벗을 사용하여 이미 시도했지만 문자열에 일반 목록을 캐스팅하는 중 오류가 발생했습니다. 그걸 내보기 페이지의 목록에 반환하고 싶습니다.

내 코드는 다음과 같습니다

var query = from ast in db.mytable            
     select new ActViewModel 
     { 
      ScreenSetupID = ast.SetupID, 
      Acame = ast.Acame    
     }; 
     var result = query.ToList(); 
     return result; 
+0

나쁜 예. 그러나 당신은 장소 이름별로 그룹화하는 것처럼 보입니다. 그리드를 그리는 것처럼 열을 줄 수는 없지만 그런 식으로 쉽게 평평하게 만들 수 있습니다. –

+0

각 장소의 카페 이름 목록을 원하면 그룹별로 충분할 수 있습니다. [this fiddle] (https://dotnetfiddle.net/ylGJma) –

+0

@ DanielJ.G를보십시오. 귀하의 바이올린을 보았습니다. 그룹을 시도했지만 캐스팅에 오류가 있습니다. 또한 쉼표로 쉼표로 구분하고 싶지 않습니다. 조금 더 명확하게해야 할 필요가 있습니다. 카페 이름과 별도의 테이블이 있습니다. 장소 이름이 장소 테이블에 카페 이름 테이블에 외래 키가있는 경우, 어떤 사람이 나를 도와 줄 수 있다면 행복 할 것입니다. – bassam

답변

0

간단한 피벗 어떤 문제가 있습니까? 이 솔루션은 어떤 방식으로 일반적인 아니라, 당신에게 좋은 시작 주어야한다 : 어쩌면

/*Thank you Daniel. J.G for the fiddle. I took it as the basis*/ 
public class Foo 
{ 
    public String Place {get; set;} 
    public String CafeName {get; set;} 
} 

List<Foo> RawFoos = new List<Foo>() 
{ 
    new Foo{Place = "x", CafeName = "cafe red"}, 
    new Foo{Place = "x", CafeName = "cafe blue"}, 
    new Foo{Place = "y", CafeName = "cafe red"}, 
    new Foo{Place = "y", CafeName = "cafe blue"}, 
    new Foo{Place = "z", CafeName = "cafe red"}, 
}; 

var pivot = from f in RawFoos 
      group f.CafeName by f.Place into g 
      //Anonymous object because I'm lazy  
      select new 
      { 
       Place = g.Key, 
       CafeRed = g.FirstOrDefault(x => x == "cafe red"), 
       CafeBlue = g.FirstOrDefault(x => x == "cafe blue") 
      }; 

pivot.Dump(); // only in Linqpad 

enter image description here

관련 문제