꽤하지 않습니다,하지만 작동 :
DataTable dt = new DataTable {
Columns = {
"Click", "Impression", "Cost", "Click-past",
"Impression-past", "cost-past"
}
};
Dictionary<string, DataColumn> colByName = dt.Columns.OfType<DataColumn>()
.ToDictionary(x => x.ColumnName, StringComparer.InvariantCultureIgnoreCase);
List<DataColumn> sorted = new List<DataColumn>(dt.Columns.Count);
foreach (DataColumn col in dt.Columns)
{
if (!col.ColumnName.EndsWith("-past",
StringComparison.InvariantCultureIgnoreCase))
{
sorted.Add(col);
DataColumn past;
if (colByName.TryGetValue(col.ColumnName + "-past", out past))
sorted.Add(past);
}
}
int ordinal = 0;
foreach(var col in sorted)
{
col.SetOrdinal(ordinal++);
}
foreach(DataColumn col in dt.Columns)
System.Console.WriteLine(col.ColumnName);
주 어떤 불명 -past
열이 (비 과거 트윈없이)이 자동으로 원래 순서를 보존, 오른쪽으로 비켜 가게됩니다.
코드를 추가 할 수 있습니까? –
편집에서 "이전"은 무엇입니까? 그것은 "이것과 같은 데이터 테이블"에는 존재하지 않습니다. 여기서 "정렬"의 논리는 무엇입니까? 'SetOrdinal' 그냥 잘 작동 ... –