Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencapai Susunan Abjad Angka dalam LINQ dengan Sufiks Berangka?

Bagaimanakah Saya Boleh Mencapai Susunan Abjad Angka dalam LINQ dengan Sufiks Berangka?

Patricia Arquette
Lepaskan: 2024-12-29 01:29:11
asal
408 orang telah melayarinya

How Can I Achieve Alphanumeric Ordering in LINQ with Numeric Suffixes?

Penyusunan Alfanumerik dalam LINQ

Dalam LINQ, kaedah OrderBy mengikut peraturan susunan leksikografi, yang menganggap kedua-dua aksara abjad dan berangka dalam turutan. Walau bagaimanapun, apabila mengisih rentetan yang berakhir dengan nilai angka, susunan ini mungkin tidak menghasilkan hasil yang diingini.

Pertimbangkan contoh berikut:

string[] partNumbers = { "ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11" };
var result = partNumbers.OrderBy(x => x);
Salin selepas log masuk

Hasil sebenar, mengikut susunan leksikografi, akan menjadi:

AB1
Ab11
AB2
ABC1
ABC10
ABC10
ABC11
ABC2
Salin selepas log masuk

Walau bagaimanapun, hasil yang dijangkakan ialah mengumpulkan urutan abjad yang serupa bersama-sama, tanpa mengira akhiran angka. Untuk mencapai matlamat ini, kita perlu mengubah suai kriteria pesanan.

Kunci untuk mengisih mengikut abjad angka ialah membandingkan bahagian berangka berlapik. Dengan memasukkan sifar kepada nilai berangka, kami memastikan LINQ dapat membezakannya dengan betul. Begini cara kita boleh melakukannya:

public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
Salin selepas log masuk

Fungsi ini melapik sifar kepada sebarang nombor dalam rentetan input. Dengan menggunakan fungsi ini sebagai kriteria pesanan dalam LINQ, kami mendapat hasil yang dijangkakan:

var result = partNumbers.OrderBy(x => PadNumbers(x));
Salin selepas log masuk

Senarai yang terhasil kini akan dipesan sebagai:

AB1
AB2
AB11
...
Salin selepas log masuk

Pendekatan ini menganggap bahawa maksimum bilangan digit dalam bahagian berangka diketahui. Untuk kes yang lebih kompleks, pertimbangkan untuk melaksanakan IComparer tersuai, yang membolehkan kawalan yang lebih terperinci ke atas kriteria perbandingan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Susunan Abjad Angka dalam LINQ dengan Sufiks Berangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan