簡體   English   中英

C# 中的自然排序順序 - 實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM