У меня следующий класс:
class Detail
{
public Detail()
{
_details = new List<string>();
}
public IList<string> Details { get { return _details; } }
private readonly List<string> _details;
}
В настоящее время я сортирую класс случайным образом, используя следующее:
void ShuffleGenericList<T>(IList<T> list)
{
//generate a Random instance
var rnd = new Random();
//get the count of items in the list
var i = list.Count();
//do we have a reference type or a value type
T val = default(T);
//we will loop through the list backwards
while (i >= 1)
{
//decrement our counter
i--;
//grab the next random item from the list
var nextIndex = rnd.Next(i, list.Count());
val = list[nextIndex];
//start swapping values
list[nextIndex] = list[i];
list[i] = val;
}
}
Я хотел бы отсортировать содержимое деталей в алфавитном порядке.
Так, например, если содержимое выглядит так:
[0] a
[1] d
[2] b
Я хочу иметь возможность запустить этот метод и отсортировать их по:
[0] a
[1] b
[2] d
Кто-нибудь знает простой способ это сделать? Обратите внимание, что списки обычно содержат менее десяти записей. Могу ли я сделать это с помощью LINQ? Извините, но я не очень знаком с LINQ. Я только что услышал предложение, что я могу это использовать.
_details.Sort()
вместо этого - так_details
декларируется какList<string>
вместоIList<string>
.Sort
только объявляетсяList<T>
, нетIList<T>
.Есть два способа:
Без LINQ:
yourList.Sort();
С LINQ:
yourList.OrderBy(x => x).ToList()
Дополнительную информацию можно найти по адресу : https://www.dotnetperls.com/sort
источник
Sort()
является участникомList<T>
notIList<T>
. Вы можете подумать о переходе на первыйIList<T>
По-другому
источник
Вы должны иметь возможность использовать
OrderBy
в LINQ ...var sortedItems = myList.OrderBy(s => s);
источник
IEnumerable<T>
а не сортировка по местуЧто не так
List<T>.Sort()
?https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort#overloads
источник
_details
по вашему примеру, но не можетеDetails