如果我有一个如下的二维数组,是否可以按最后一个元素对数组进行排序?(最后一个元素表示2、10、1、5)
string[,] original = new string[4, 3] { {"apple","price1", "2"}, {"orange","price2", "10"} , {"Pineapple","price5", "1"}, {"Kiwi","price3", "5"}};
这不能直接回答问题,但是更清洁的实现可能类似于...
public class Fruit : IComparer<Fruit>, IComparable<Fruit>
{
public Fruit(string name, double price, int quantity)
{
Name = name;
Price = price;
Quantity = quantity;
}
protected int Quantity { get; set; }
protected double Price { get; set; }
protected string Name { get; set; }
public int CompareTo(Fruit other)
{
if (Quantity < other.Quantity) return 1;
if (Quantity > other.Quantity) return -1;
return 0;
}
public override string ToString()
{
return string.Format("{0} {1} {2}", Name, Price, Quantity);
}
public int Compare(Fruit x, Fruit y)
{
if (x.Quantity > y.Quantity) return 1;
if (x.Quantity < y.Quantity) return -1;
return 0;
}
}
然后,您可以像这样使用新类...
var fruits = new List<Fruit>
{
new Fruit("Apple", 0.30, 2),
new Fruit("Orange", 0.50, 10),
new Fruit("Pineapple", 0.35, 1),
new Fruit("Kiwi", 0.33, 5)
};
Console.WriteLine("Before sort");
foreach (var fruit in fruits)
{
Console.WriteLine(fruit.ToString());
}
fruits.Sort();
Console.WriteLine("After sort");
foreach (var fruit in fruits)
{
Console.WriteLine(fruit.ToString());
}
fruits.Reverse();
Console.WriteLine("After reverse");
foreach (var fruit in fruits)
{
Console.WriteLine(fruit.ToString());
}
Console.ReadLine();
输出:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句