은 "고전적인"투사가 컴파일러 지원이 필요
var res = myList.Select(d => new {d.ColB});
실행 속도가 지나치게 중요하지 않은 경우,
그러나 (위의 코드 ColB
라는 하나의 속성과 익명 클래스를 만듭니다) 컴파일러 생성 클래스 대신 ExpandoObject을 사용할 수 있습니다.
var columnList = new[] {"ColB"};
var res = myList.Select(d => Project(d, columnList));
...
static ExpandoObject Project(MyDataObject d, string[] columns) {
var res = new ExpandoObject();
// Using reflection here is a much better solution
if (Array.IndexOf(columns, "ColA") >= 0) res.ColA = d.ColA;
if (Array.IndexOf(columns, "ColB") >= 0) res.ColB = d.ColB;
if (Array.IndexOf(columns, "ColC") >= 0) res.ColC = d.ColC;
return res;
}
ColB를 유지하고 다른 모든 열을 제거하려고합니다. ColB를 제거하려고하지 않습니다. – JesseBuesking