문제

DataTable.DefaultView.Sort에 혼란 스러워요. 다음은 사용하려는 코드의 세그먼트입니다.

actionLogDT.DefaultView.Sort = "StartDate";

foreach (CustomerService.ActionLogStartEndRow logRow in actionLogDT)
{
  // code here
}

내가 본 샘플은 Foreach 루프를 사용하지 않으므로이 처리 방법에 대해 혼란스럽게합니다. 내가 생각했던 것처럼 정렬되지 않습니다.

.defaultView가보기를 반환하고 .table은 컴파일 오류를 제공합니다.

도움이 되었습니까?

해결책 3

나는 약간 다른 접근법을 취해야했다. 이 게시물 코드가 작동하기 위해 가장 가까운 곳이었습니다. 작업 결과는 다음과 같습니다.

actionLogDT.DefaultView.Sort = "StartDate";
DataView dv = actionLogDT.DefaultView;

foreach (DataRowView logRow in dv) { . . . }

거기에서 나는 단지 값을 올바른 유형으로 다시 던져야합니다.

(string)logRow["Status"].ToString()

다른 팁

actionLogDT.DefaultView.Sort = "StartDate";

actionLogDT = actionLogDT.DefaultView.ToTable();

보기를 정렬하면 테이블의 데이터 정렬 순서가 변경되지 않고보기의 순서 만 변경하지 않습니다. 당신이 당신의 일을하면 작동해야합니다 foreach 대신 뷰에서, DatAROWView에서 강하게 입력 된 행으로 행을 캐스팅하십시오.

foreach (DataRowView logRowView in actionLogDT.DefaultView)
{
    CustomerService.ActionLogStartEndRow logRow = logRowView.Row as CustomerService.ActionLogStartEndRow;
    // code here
}
foreach (var logRow in actionLogDT.DefaultView.ToDataTable()) { ... }

또한 레코드를 고려하고 싶었던 것처럼 보였으므로 dataRowView 객체의 개체 DefaultView.

foreach (DataRowView drv in table.DefaultView)
{
    string strValue = drv["ColumnName"].ToString();
    // its also worth mentioning that a DataRowView has a Row
    strValue = drv.Row["ColumnName"].ToString();
}

이것을 시도하십시오 :

actionLogDT.DefaultView.Sort = "["+actionLogDT.Columns[0].ColumnName+"] asc";

궁금한 점 : 왜 당신은 DatArowView?

foreach (DataRow row in actionLogDT.Rows)
{
  Console.WriteLine(row["Status"]);
}

DataTable이 필요하면 다음과 같은 작업을 수행 할 수 있습니다.

var dv = actionLogDT.DefaultView;
dv.Sort = "StartDate";

actionLogDT = dv.ToTable();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top