要按给定的字符串作为字段排序,你可以使用OrderBy方法和自定义的比较器来实现。

首先,你需要创建一个实现IComparer<T>接口的自定义比较器。在这个比较器中,你需要根据给定的字符串字段进行比较。以下是一个示例:

public class StringFieldComparer<T> : IComparer<T>
{
    private Func<T, string> getFieldFunc;

    public StringFieldComparer(Func<T, string> getFieldFunc)
    {
        this.getFieldFunc = getFieldFunc;
    }

    public int Compare(T x, T y)
    {
        string fieldX = getFieldFunc(x);
        string fieldY = getFieldFunc(y);

        return string.Compare(fieldX, fieldY, StringComparison.OrdinalIgnoreCase);
    }
}

接下来,你可以使用OrderBy方法和自定义比较器来对List<T>进行排序。以下是一个示例:

List<Person> persons = new List<Person>
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Alice", Age = 25 },
    new Person { Name = "Bob", Age = 35 }
};

string sortBy = "Name";

var sortedPersons = persons.OrderBy(p => p, new StringFieldComparer<Person>(p => sortBy == "Name" ? p.Name : string.Empty));

foreach (var person in sortedPersons)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}

在上面的示例中,我们创建了一个List<Person>,并指定了要按Name字段排序。然后,我们使用OrderBy方法和自定义比较器来对列表进行排序。最后,我们遍历排序后的列表并打印结果。

请注意,上述示例中的Person类是一个自定义类,你需要根据自己的需求替换为相应的类

NET CORE listT 怎么按给定的字符串作为字段排序

原文地址: https://www.cveoy.top/t/topic/ibAC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录