【问题标题】:I can not sort list with strings我不能用字符串对列表进行排序
【发布时间】:2020-02-16 17:53:42
【问题描述】:

我现在可以像这样对列表进行排序:

_personList = _personList.OrderBy(l => l.Name).ToList();

如果我想使用 lambda,

但出于培训目的,我想使用委托比较器。

我的代码:

    public class Person : IEquatable<Person>, IComparable<Person>
    {
        public Person(string name,int age, string interest)
        {
            _name = name;
            _age = age;
            _interest = interest;

        }

        private string _name = string.Empty;
        private int _age = 0;
        private string _interest = string.Empty;
        private string _cmbShowText = string.Empty;



        public string Name
        {
            get { return _name; }
            set {_name = value; }
        }
   //Left out some not interesting properties//

        public bool Equals(Person other)
        {
            if (other == null) return false;
            return (this.Name.Equals(other.Name));
        }

        public int CompareTo(Person other)
        {
            // A null value means that this object is greater.
            if (other == null)
                return 1;

            else
                return this.Name.CompareTo(other.Name);
        }
    }

排序方法:(lstall是一个列表框)

private void CmdSortCustom_Click(object sender, EventArgs e)
{               //Avancerad sortering
                _personList.Sort(delegate (Person x, Person y)
                {
                    if (x.Name == null && y.Name == null) return 0;
                    else if (x.Name == null) return -1;
                    else if (y.Name == null) return 1;
                    else return x.Name.CompareTo(y.Name);
                });

    reFreshDatasource();
}
    private void reFreshDatasource()
{
    lstall.DisplayMember = "Name";
    lstall.ValueMember = "Name";
    lstall.DataSource = _personList;
}

按字母顺序对名称进行排序我做错了什么?

代码编译,程序不会崩溃。

【问题讨论】:

  • “它不起作用”是什么意思。程序是否崩溃,或者它只是与列表无关。您是否在监视窗口中或仅在用户界面中检查了您的 _personList ?
  • 试试this:先把listbox数据源设为null。
  • 我从您的代码中创建了this dotnet fiddle。以正确的顺序进行排序。
  • @Jesse de Wit 将其设置为 null,谢谢一百万!

标签: c# sorting listbox


【解决方案1】:

就像@Jesse de Wit - 告诉我,我必须先将数据源设置为 NULL。

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多