2013-11-03 2 views
1

에서 LINQ로 선택한 데이터의 "방법의 반환 형식"나는 데이터가 데이터베이스에서받은 걸리는 방법을 가지고, 그것은 특정 일에만 데이터를 취합니다필요 DataTable을

private static **return type** FilterDataByDay(DataTable dt, string nameOfTheDay) 
    { 
     var data = dt.AsEnumerable().Select(x => new 
      { 
       code = x.Field<string>("Code"), 
       day= x.Field<string>("Day"), 
       name= x.Field<string>("Name"), 
       startTime= x.Field<int>("StartTime"), 
       endTime= x.Field<int>("EndTime") 

      }) 
            .Where(x => x.day.Equals(nameOfTheDay)) 
            .ToList(); 

     return data ; 
    } 

문제는 내가입니다

foreach(var variable in "the retuned data from method") 
    { 
    Console.WriteLine(variable.code +" "+ variable.day + ..etc... 
    } 
+1

귀하의 반환 유형은 다음이 될 것입니다. 메서드에 의해 반환되어서는 안됩니다. 필요한 모든 속성을 포함하는 클래스를 정의하십시오. –

답변

2

익명 형식의 경우 이름이 지정되지 않은 것입니다 (예 : 익명.

가장 좋은 방법은 IEnumerable<SomeClass>을 반환 할 수있는 적절한 속성을 사용하여 자신 만의 클래스를 정의하는 것입니다.

+0

시간 내 주셔서 감사합니다. – mat1c

2

당신은 래퍼를 만들 수 있습니다 다른 방법은 그것을 개미 인쇄를 꺼낼 수 있다는 것을,이 방법에서 데이터를 반환하는 방법을 모른다, 각 행의 같은 모든 요소, 그것은 나에게 뭔가를 인쇄 할 수 있도록해야한다 수업을 들으면 다음과 같이됩니다. IEnumerable<MyClass>

또는 IEnumerable<dynamic>을 사용할 수는 있지만 이렇게하면 인텔리전스가 생기지 않습니다.

2

로드 된 데이터를 캡슐화하는 적절한 클래스를 정의하는 것이 아마도 가장 좋은 방법 일 것입니다. 그러나 나중에 필요하지 않을 데이터를 다루고 있고 주변에 많이 전달하지 않으면 Tuple 클래스를 활용할 수 있습니다. 약간 어색하게 보일 것입니다 만, 코드 일 뿐이며 공용 API의 일부가 아닌 경우에도 사용할 수 있습니다. 당신이 잘못된 방법으로`익명 type`을 사용하고 IEnumerable<Tuple<string, string, string, int, int>>