В вашем случае, вы должны создать новый Comparer, который может сортировать в lexicograhical order Вы должны иметь свою собственную реализацию компаратора, который реализует интерфейс IComparer<string>
. Ваш Comparer должно быть так:
public class LexicoComparer : IComparer<string>
{
public int Compare(string x, string y)
{
var firstArgumentSplits = x.Split(' ');
var secondArgumentSplits = y.Split(' ');
if (firstArgumentSplits.Length == 2 && secondArgumentSplits.Length == 2)
{
int firstArgumentInt, secondArgumentInt;
if (firstArgumentSplits[0] == secondArgumentSplits[0])
{
if (int.TryParse(firstArgumentSplits[1], out firstArgumentInt))
{
if (int.TryParse(secondArgumentSplits[1], out secondArgumentInt))
{
return firstArgumentInt == secondArgumentInt ? 0 : firstArgumentInt > secondArgumentInt ? 1 : 0;
}
}
}
}
return String.Compare(x, y);
}
}
Теперь вы используете выше компаратором в OrderBy
:
ViewBag.AddrBarangay = new SelectList(db.Barangays,
"BarangayId", "BarangayName", "").OrderBy(m => m.Text,
new LexicoComparer());
Можете ли вы, пожалуйста, дайте мне знать, номер вместе с текстом или отдельным столбцом? или вы объединяете оба? понимаете ли вы мою мысль? – Rajpurohit
@ Rajpurohit это вместе с текстом. – KiRa
Вы имеете в виду колонку «BarangayName», содержащую «Barangay 1», «Barangay 101»? – Rajpurohit