Mam następującą klasę:
class Detail
{
public Detail()
{
_details = new List<string>();
}
public IList<string> Details { get { return _details; } }
private readonly List<string> _details;
}
Obecnie sortuję klasę losowo, korzystając z:
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;
}
}
Chciałbym uporządkować zawartość szczegółów w porządku alfabetycznym.
Na przykład, jeśli zawartość wygląda tak:
[0] a
[1] d
[2] b
Chcę móc uruchomić tę metodę i posortować je w:
[0] a
[1] b
[2] d
Czy ktoś zna prosty sposób na zrobienie tego? Zauważ, że listy zwykle zawierają mniej niż dziesięć wpisów. Czy mogę to zrobić z LINQ? Przepraszam, ale nie znam LINQ. Właśnie usłyszałem sugestię, że mógłbym go użyć.
_details.Sort()
zamiast tego - tak jak_details
jest zadeklarowane jakoList<string>
zamiastIList<string>
.Sort
jest tylko deklarowaneList<T>
, a nieIList<T>
.Istnieją dwa sposoby:
Bez LINQ:
yourList.Sort();
Z LINQ:
yourList.OrderBy(x => x).ToList()
Więcej informacji znajdziesz na: https://www.dotnetperls.com/sort
źródło
Sort()
jest członkiemList<T>
notIList<T>
. Możesz rozważyć przejście na tę pierwszą (chyba że spodziewasz się pracy z różnymiIList<T>
implementacjami).Inny sposób
źródło
Powinieneś móc używać
OrderBy
w LINQ ...var sortedItems = myList.OrderBy(s => s);
źródło
IEnumerable<T>
i nie jest sortowane na miejscuCo jest nie tak
List<T>.Sort()
?https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort#overloads
źródło
_details
podstawie swojego przykładu, ale nieDetails