sizin örnekte çok doğrudan yolu var. Unutmayın ki, bulunmayan öğeler -1, sizin için de düzeltebileceksiniz.
Daha karmaşık bir şey yapmak isterseniz, özel siparişinizi kullanarak öğeleri karşılaştırmak için kendi özel IComparer
sınıf uygulamanızı oluşturabilirsiniz. Bu daha sonra OrderBy'ye geçirilebilir.
bir IComparer gibi görünecektir Böyle:
public sealed class SequenceComparer : IComparer<string>
{
private string[] _sequence { get; set; }
public SequenceComparer(string[] sequence)
{
if (sequence == null) throw new ArgumentNullException("sequence");
_sequence = sequence;
}
public int Compare(string x, string y)
{
if (ReferenceEquals(x, y)) return 0;
return Array.IndexOf(_sequence, x).CompareTo(Array.IndexOf(_sequence, y));
}
}
Ve gibi çağrılabilir: Her iki şekilde iyi çalışıyor
var result = bb.OrderBy(x => x.Country, new SequenceComparer(new [] { "AR", "CL", "PY", "UY", "AUP" }));
, ikincisi güzel ve yeniden kullanılabilir, ancak eski olduğu (doğrudan IndexOf kullanarak) hala çok özlü. Senin seçimin.
Bu konuda okuyabileceğim bir yer önerebilir misin? – Guillermo
@Guillermo: sadece Array.IndexOf() –
Great kullanarak çok doğrudan bir şekilde benim örnek düzenlenmiş, ben Array.IndexOf 'hilesi için – Guillermo