按字符串(名称)按字母顺序排列对象数组

时间:2012-07-28 23:39:18

标签: c# sorting

我非常喜欢编程,而且正在学习C#。第4周!

编写要求用户输入的程序:

  • 朋友姓名
  • 电话
  • 出生月份
  • 出生年份。

创建对象数组并使用IComparable启用对象比较。 需要按字母顺序按字符串对对象进行排序,我认为除了获取要比较的字符串之外,我还有其余所有代码。以下是我对IComparable.CompareTo(Object o)

的看法
int IComparable.CompareTo(Object o)
{
    int returnVal;

    Friend temp = (Friend)o;
    if(this.Name > temp.Name)
        returnVal = 1;
    else
        if(this.Name < temp.Name)
            returnVal = -1;
        else returnVal = 0;
    return returnVal;
}

编译时收到的错误是:

  

CS0019运营商'&gt;'不能应用于'string'和'string'类型的操作数。

讲师帮助不大,文字没有合成这种意外情况。

2 个答案:

答案 0 :(得分:3)

只需委托给String.CompareTo

int IComparable.CompareTo(Object o) {
    Friend temp = (Friend)o;

    return this.Name.CompareTo(temp.Name);
}

答案 1 :(得分:0)

这使用了一些您可能不习惯的语言功能,但确实更容易:

people = people.OrderBy(person => person.Name).ToList();

用过:

var rnd = new Random();
var people = new List<Person>();
for (int i = 0; i < 10; i++)
    people.Add(new Person { Name = rnd.Next().ToString() });

//remember, this provides an alphabetical, not numerical ordering,
//because name is a string, not numerical in this example.
people = people.OrderBy(person => person.Name).ToList();

people.ForEach(person => Console.WriteLine(person.Name));
Console.ReadLine();

Google LINQ [并记得添加'using System.Linq;']和Lambda's。