2017-12-18 17 views
0

각 쿼리 결과 목록에는 각각 다른 개체가 포함되어 있습니다. 데이터 유형마다 하나의 유형이 있습니다.C# 및 Linq 쿼리에서 개체 [,]

var myQueryresult = _myContext.TableA 
    .Where(a => a.IsToBeProcessed) 
    .Select(x => new { ColumnA = x.FieldA, ColumnB = x.FieldB }) 
    .ToList(); 

최종 목표는 내가이 있지만, 결과의 각 행에 반복을 할 수있는 방법을 찾을 수가 없습니다

Range firstCell = sheet.Cells[1, 1]; 
Range lastCell = sheet.Cells[data.GetLength(0) + 1, data.GetLength(1)]; 
sheet.Range[firstCell, lastCell].Value2 = myObjectArrayofObjectArrays; 

사용하여 Excel 시트에 데이터를 저장하는 것입니다.

Excel.Range testRng = (Excel.Range)sheet.Cells[1, 1]; 
testRng = testRng.get_Resize(data.GetLength(0), data.GetLength(1)); 
testRng.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, myObjectArrayofObjectArrays); 

편집

내가 요구 사항을 잘못 이해 :

+0

당신은 EPPlus 같은 라이브러리를 사용할 수 출력 선택의 엔진에 의존하는 다음 JSON

var json = JsonConvert.SerializeObject(results); var table = (DataTable)JsonConvert.DeserializeObject(json, typeof(DataTable)) 

를 통해 데이터 테이블에 데이터의 사용자 설정을 켜고 수있는 'var range = sheet.LoadFromCollection (myQueryResult)'와 같이 모든 콜렉션, 데이터 테이블 또는 데이터 배열에서 직접 데이터를로드 할 수 있습니다. Interop은 동일한 컴퓨터에 Excel을 설치해야합니다. EPPlus와 같은 라이브러리에는 아무 것도 필요하지 않습니다. –

답변

0

당신은 엑셀 라이브러리의 NamedRange.get_Resize Method뿐만 아니라 NamedRange.set_Value Method (Object, Object) 다음과 같이 사용할 수 있습니다. 첫 번째 부분에서는 각 요소를 통과하는 루프가 가장 좋은 방법 인 것처럼 보입니다.

+0

걱정할 필요가 없습니다. 답장을 보내 주셔서 감사합니다. 그리고 네, 그게 제가 끝난 것입니다, 좋은 ol '루핑. – Matth

0

당신은 엑셀 준비 형식으로 데이터 테이블이

+0

죄송합니다, 나는 당신을 회상 할 수는 없지만 회신 할 시간을내어 주셔서 감사합니다. 나는 일을 끝내기 위해 내 물건을 반복했다. 효율적이지는 않지만 데이터 양은 이와 관련하여 절대로 문제가되지 않습니다. – Matth

+0

나는 모든 점이 루핑을 피하는 것이라고 생각했다. :) –