DataTable.DefaultView.Sort는 정렬되지 않습니다
문제
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();
제휴하지 않습니다 StackOverflow