NET CORE listT 怎么按给定的字符串作为字段排序
要按给定的字符串作为字段排序,你可以使用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类是一个自定义类,你需要根据自己的需求替换为相应的类
原文地址: https://www.cveoy.top/t/topic/ibAC 著作权归作者所有。请勿转载和采集!