function sortNumber(a,b)
{
if(a>b)
return 1;
else return -1;
}
var n = [0.05,0.101,1.01,0.10, 40.8, 25, 100, 11.4232];
n.sort(sortNumber);
var stringList = project.Lists["Строки"]; //Список с цифрами для сортировки
var digitsList = new List<int>();
for(int i=0; i<stringList.Count; i++)
{
var number = Convert.ToInt32(stringList[i]);
digitsList.Add(number);
}
digitsList.Sort();
stringList.Clear();
for(int a=0; a<digitsList.Count; a++)
{
var str = digitsList[a].ToString();
stringList.Add(str);
}
List<string> numbers = project.Lists["number"].ToList();// зеновский список
project.Lists["number"].Clear();
numbers = numbers.OrderBy(s=>s.Length).ThenBy(s=>s).ToList();
numbers.ForEach(s=>project.Lists["number"].Add(s));
List<string> numbers = project.Lists["number"].ToList();// зеновский список
project.Lists["number"].Clear();
numbers = numbers.OrderByDescending(s=>s.Length).ThenByDescending(s=>s).ToList();
numbers.ForEach(s=>project.Lists["number"].Add(s));
Не сортирует так. А только по первому числу.правильно всё отсортировало, если были нули перед значениями, то было бы так
003
005
007
013
017
Добавляете в список и там уже сортируете как числа.Коллеги подскажите пожалуйста, а возможно ли отсортировать список с такими числами?
1.4512
1.6734
1.3535
1.2856
и тд
Попробовал сортировать список с числами вот так:Добавляете в список и там уже сортируете как числа.
Сортирует только целы числа корректно. Если число типа такого 395.5 , то сортирует как-то странно:C#:List<string> numbers = project.Lists["number"].ToList();// зеновский список project.Lists["number"].Clear(); numbers = numbers.OrderBy(s=>s.Length).ThenBy(s=>s).ToList(); numbers.ForEach(s=>project.Lists["number"].Add(s));
Попробуйте заменить точку на запятую.Попробовал сортировать список с числами вот так:
Сортирует только целы числа корректно. Если число типа такого 395.5 , то сортирует как-то странно:
А как можете подсказать? Пробовал добавить Replace(".", ",") , но я C# не знаю. Пока не получилосьПопробуйте заменить точку на запятую.
Примените этот код, чтобы заменить точку на запятую в каждой строке списка:А как можете подсказать? Пробовал добавить Replace(".", ",") , но я C# не знаю. Пока не получилось
IZennoList list1 = project.Lists["Список"];
List<string> lstTemp = new List<string>();
foreach(var s in list1){
lstTemp.Add(Macros.TextProcessing.Replace(s, ".", ",", "Text", "All"));
}
list1.Clear(); // очищаем список
list1.AddRange(lstTemp); // сейвим временный список
Не нужен excel.)Други, здравия! А если список не цифры, а текст. И нужно отсортировать или фильтрануть по длинне строк. Я так понимаю тут только копировать список в ексель, там делать и забирать назад?
string[] array = project.Lists["ZennList"].ToArray();
project.Lists["ZennList"].Clear();
List<string> list = array.OrderBy(x => x.Length).ToList();
project.Lists["ZennList"].AddRange(list);
Кстати, в процессе случайно выяснил, что числа меньше единицы (0,1 и т.д.) при сортировке по возрастанию этим сниппетом почему-то ставятся в конец (после всех других чисел) О_оможно так
По возрастанию
C#:List<string> numbers = project.Lists["number"].ToList();// зеновский список project.Lists["number"].Clear(); numbers = numbers.OrderBy(s=>s.Length).ThenBy(s=>s).ToList(); numbers.ForEach(s=>project.Lists["number"].Add(s));
List<string> numbers = project.Lists["number"].ToList();
project.Lists["number"].Clear();
var nums = numbers.Select(s => double.Parse(s.Trim().Replace('.',','))).ToList();
nums.Sort();
nums.ForEach(s => project.Lists["number"].Add(s.ToString()));