Добавление к ответ Rasmus Faber †¦
Сортировка в LINQ, через Счетный. OrderBy и Счетный. ThenBy, стабильная реализация вида, которая может использоваться в качестве альтернативы Массив. Вид . От [1 110] Счетный. Документация OrderBy в MSDN:
Этот метод выполняет стабильный вид; то есть, если ключи двух элементов равны, порядок элементов сохраняется. Напротив, нестабильный вид не сохраняет порядок элементов, которые имеют тот же ключ.
кроме того, любая нестабильная реализация вида, как этот Array.Sort
, может быть стабилизирована при помощи положения элементов в исходной последовательности или массиве как дополнительный ключ для служения в качестве дополнительного времени. Ниже одна такая реализация, как универсальный дополнительный метод на любом одно-мерном массиве и который поворачивается Array.Sort
в стабильный вид:
using System;
using System.Collections.Generic;
public static class ArrayExtensions {
public static void StableSort(this T[] values, Comparison comparison) {
var keys = new KeyValuePair[values.Length];
for (var i = 0; i < values.Length; i++)
keys[i] = new KeyValuePair(i, values[i]);
Array.Sort(keys, values, new StabilizingComparer(comparison));
}
private sealed class StabilizingComparer : IComparer>
{
private readonly Comparison _comparison;
public StabilizingComparer(Comparison comparison) {
_comparison = comparison;
}
public int Compare(KeyValuePair x,
KeyValuePair y) {
var result = _comparison(x.Value, y.Value);
return result != 0 ? result : x.Key.CompareTo(y.Key);
}
}
}
Ниже пример программы с помощью StableSort
сверху:
static class Program
{
static void Main()
{
var unsorted = new[] {
new Person { BirthYear = 1948, Name = "Cat Stevens" },
new Person { BirthYear = 1955, Name = "Kevin Costner" },
new Person { BirthYear = 1952, Name = "Vladimir Putin" },
new Person { BirthYear = 1955, Name = "Bill Gates" },
new Person { BirthYear = 1948, Name = "Kathy Bates" },
new Person { BirthYear = 1956, Name = "David Copperfield" },
new Person { BirthYear = 1948, Name = "Jean Reno" },
};
Array.ForEach(unsorted, Console.WriteLine);
Console.WriteLine();
var unstable = (Person[]) unsorted.Clone();
Array.Sort(unstable, (x, y) => x.BirthYear.CompareTo(y.BirthYear));
Array.ForEach(unstable, Console.WriteLine);
Console.WriteLine();
var stable = (Person[]) unsorted.Clone();
stable.StableSort((x, y) => x.BirthYear.CompareTo(y.BirthYear));
Array.ForEach(stable, Console.WriteLine);
}
}
sealed class Person
{
public int BirthYear { get; set; }
public string Name { get; set; }
public override string ToString() {
return string.Format(
"{{ BirthYear = {0}, Name = {1} }}",
BirthYear, Name);
}
}
Ниже вывод из примера программы выше (работа машины с Windows Vista SP1 и Платформой.NET 3,5 установленные SP1):
{ BirthYear = 1948, Name = Cat Stevens }
{ BirthYear = 1955, Name = Kevin Costner }
{ BirthYear = 1952, Name = Vladimir Putin }
{ BirthYear = 1955, Name = Bill Gates }
{ BirthYear = 1948, Name = Kathy Bates }
{ BirthYear = 1956, Name = David Copperfield }
{ BirthYear = 1948, Name = Jean Reno }
{ BirthYear = 1948, Name = Jean Reno }
{ BirthYear = 1948, Name = Kathy Bates }
{ BirthYear = 1948, Name = Cat Stevens }
{ BirthYear = 1952, Name = Vladimir Putin }
{ BirthYear = 1955, Name = Bill Gates }
{ BirthYear = 1955, Name = Kevin Costner }
{ BirthYear = 1956, Name = David Copperfield }
{ BirthYear = 1948, Name = Cat Stevens }
{ BirthYear = 1948, Name = Kathy Bates }
{ BirthYear = 1948, Name = Jean Reno }
{ BirthYear = 1952, Name = Vladimir Putin }
{ BirthYear = 1955, Name = Kevin Costner }
{ BirthYear = 1955, Name = Bill Gates }
{ BirthYear = 1956, Name = David Copperfield }
Вот лучший способ установить Ваш пароль root: Исходная Ссылка Шаг 3 работает отлично на меня.
Команды для Вас
- sudo mysql
- ВЫБИРАЮТ пользователя, authentication_string, плагин, хост ОТ mysql.user;
- ИЗМЕНЯЮТ ПОЛЬЗОВАТЕЛЯ 'корень' 'localhost' ОТОЖДЕСТВЛЕННЫЙ С mysql_native_password 'паролем';
- ПОЛНОМОЧИЯ СБРОСА;
- ИЗБРАННЫЙ пользователь, authentication_string, плагин, размещают ОТ mysql.user;
- выход
Теперь можно проверить, что Пароль выше набора для пользователя root является 'паролем':
- mysql-u корневой-p
- СОЗДАЮТ ПОЛЬЗОВАТЕЛЯ 'sammy' 'localhost' ОПРЕДЕЛЕННЫЙ 'паролем';
- ПРЕДОСТАВЛЕНИЕ ВСЕ ПОЛНОМОЧИЯ НА . К 'sammy' 'localhost' С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ;
- ПОЛНОМОЧИЯ СБРОСА;
- выход
Тест Ваш mysql Сервис и Версия:
systemctl status mysql.service
sudo mysqladmin -p -u root version