首页 > 解决方案 > 实体对象上的 IQueryable.OrderBy

问题描述

我知道通过在一个类上实现 IComparable,比如……</p>

public class Person : IComparable<Person>
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int CompareTo(Person other)
    {
        var val = LastName.CompareTo(other.LastName);
        return val == 0 ? FirstName.CompareTo(other.FirstName) : val;
    }
}

…允许我打电话

IEnumerable.OrderBy(x => x.Person);

…代替

IEnumerable.OrderBy(x => x.Person.LastName)
           .ThenBy(x => x.Person.FirstName);

我如何能够对 Person 实体上的 LINQ To SQL 中的 IQueryable.OrderBy 执行相同的操作?

标签: c#linqlinq-to-sql

解决方案


尝试做这样的事情:

IEnumerable.OrderBy(x => strig.Fromat("{0}{1}", x.Person.LastName, x.Person.FirstName);

或(如果您使用$受支持的较新 C# 版本):

IEnumerable.OrderBy(x => $"{x.Person.LastName}{x.Person.FirstName}");

它应该通过考虑姓氏和名字来对您的项目进行排序(并且通过仅在列表中迭代一次来获得一些性能)。

希望能帮助到你!


推荐阅读