[英]Natural sort order in C# - implementation
我想使用這個實現自然排序:
public static IEnumerable<T> OrderByAlphaNumeric<T>(this IEnumerable<T> source, Func<T, string> selector)
{
int max = source
.SelectMany(i => Regex.Matches(selector(i), @"\d+").Cast<Match>().Select(m => (int?)m.Value.Length))
.Max() ?? 0;
return source.OrderBy(i => Regex.Replace(selector(i), @"\d+", m => m.Value.PadLeft(max, '0')));
}
(取自C# 中的自然排序順序)
我有一個dataview dv
,其中包含(除其他外)一列code_name
。 我想將此數據視圖的數據復制到一個新的數據表datatable dtNew
,並在code_name
列上進行自然排序。 我想代碼應該是這樣的:
DataTable dtNew = dv.Table.AsEnumerable().OrderBy(x => x.Field<string>("code_name"),OrderByAlphaNumeric<T>).CopyToDataTable();
但是我對如何在我的上下文中操作IEnumerable<T> OrderByAlphaNumeric<T>
。
我相信你想像這樣使用它:
DataTable dtNew = dv.Table.AsEnumerable().OrderByAlphaNumeric(x => x.Field<string>("code_name")).CopyToDataTable();
請確保打開包含OrderByAlphaNumeric
的命名空間,您將在其中使用此代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.