2013-06-19 6 views
0

저는 ASP.Net MVC에서 Entity Framework를 사용하고 있습니다.엔터티 프레임 워크에서 테이블의 모든 열을 반복합니다.

나는 테이블 스키마 다음 한

MyTable(Y1947, Y1948, Y1949, Y1950,.........Y2012) 

Y1947에서 Y2012에 시작합니다.

이 모든 열을 반복하고 싶습니다. 나는 실행되지 않습니다 다음 코드를 사용하고 있습니다 :

EntityFramework ef = new EntityFramework(); 
    var q = from table in ef.MyTable 
      select table; 

    int i = 1947; 

    foreach(var item in q) 
    { 
     string str=item["Y" + i].toString(); // Error in Entity Framework 
     i++; 
    } 

을하지만 엔티티 프레임 워크가 item.Y1947 등 사용 제한, 난 그냥 모든 열을 반복하고 싶습니다. 이 일을 도와주세요.

+1

은 당신이 무엇 싶지 않는

public partial class MyTable { public string DisplayYValues() { var sb = new StringBuilder(); var properties = this.GetType().GetProperties().Where(m => m.Name.StartsWith("Y")); foreach (var property in properties) { var value = property.GetValue(this, null); sb.AppendLine(value == null ? string.Empty : value.ToString()); } return sb.ToString(); } } 

다음 사용과 같이 갈 것인가? "Y"로 시작하는 열만 표시하면 모든 테이블 행에 대해 표시 할 수 있습니까? –

+1

정상적인 정규화로도 문제가 발생하지 않습니다. –

답변

2

엔티티 프레임 워크에서 데이터 테이블을 얻지 못하면 개체가 생깁니다. 다른 프레임 워크를 선택하기 위해 datatable 또는 이와 유사한 것을 사용하고 싶다면.

당신이 반사하여이 작업을 수행 할 수 있습니다 그러나, 나는, 형태의 무언가가 (이 컴파일하지 않은하지만 당신은 그림을 얻는다) 당신이 달성 싶은 일에 대해

foreach(var item in q) 
{ 
    foreach(var col in item.GetType().GetProperties().Where(p=>p.Name.StartsWith("Y19") || p.Name.StartsWith("Y20")) 
    { 
     var thing = col.GetValue(item, null); 
    } 
} 
1

확실하지,하지만 난 잘 이해하는 경우

EntityFramework ef=new EntityFramework(); 
    var q=(from table in ef.MyTable 
      select table).ToList(); 

var result = q.Select(m => m.DisplayYValues()); 
+0

똑같은 대답 10 초 간격, 위대한 마음은 어.) –

관련 문제