Hej! Här är ett enkelt exempel i C# (det blir nog ganska exakt likadant i VB.NET): För att förtydliga så är lambda expressions bara ett snyggare sätt att skriva anonyma delegater på, precis som att anonyma delegater är snyggare än "vanliga" delegater.Sortering i gridview som binds till arraylist
Jag har en gridview som binds till en arraylist med Customer-objekt. Nu vill jag ha sorteringsmöjlighet på detta. Någon som har en idé om principiellt tillvägagångssätt? Sv: Sortering i gridview som binds till arraylist
class Kund : IComparable
{
public string Name;
public Kund(string name) { Name = name; }
public int CompareTo(object obj)
{ // Sorteringsvillkor här
return Name.CompareTo(((Kund)obj).Name);
}
}
class Kund2
{
public string Name;
public Kund2(string name) { Name = name; }
}
Alt 1 "gammaldags" ArrayList:
ArrayList lst = new ArrayList();
lst.Add(new Kund("aaa"));
lst.Add(new Kund("ccc"));
lst.Add(new Kund("bbb"));
lst.Sort();
Om du kan använda .NET2+ så använd gärna någon av nedanstående istället:
Alt 2 generic List
List<Kund> lst2 = new List<Kund>();
lst2.Add(new Kund("aaa"));
lst2.Add(new Kund("ccc"));
lst2.Add(new Kund("bbb"));
lst2.Sort();
Alt 3 generic List och jämförelse med lambdauttryck
List<Kund2>lst3 = new List<Kund2>();
lst3.Add(new Kund2("aaa"));
lst3.Add(new Kund2("ccc"));
lst3.Add(new Kund2("bbb"));
lst3.Sort((a, b) => a.Name.CompareTo(b.Name));
List<Kund2>4 generic List och jämförelse med delegat
var lst4 = new List<Kund2>();
lst4.Add(new Kund2("aaa"));
lst4.Add(new Kund2("ccc"));
lst4.Add(new Kund2("bbb"));
lst4.Sort(delegate(Kund2 a, Kund2 b) { return a.Name.CompareTo(b.Name); });
Det finns väl egentligen inget rätt eller fel utan det är mer en smaksak vilken typ av kod man gillar.Sv:Sortering i gridview som binds till arraylist