gpt4 book ai didi

c# - 特定属性的通用订购方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:41 26 4
gpt4 key购买 nike

我是泛型编程的新手,有一个问题:

我正在尝试按应定义为参数的特定属性对列表进行排序。请查看代码以更好地理解我想要什么:

public static IEnumerable<T> SortEmployeesFor<T>(
IEnumerable<T> list,
property1,
property2,
OrderOptions options)
{
switch (options)
{
case OrderOptions.1:
return list.OrderBy(x => property1).ThenBy(x => property2);

case OrderOptions.2:
return list.OrderBy(x => property2).ThenBy(x => x.property1);

...
}

return list;
}

是否有执行此操作的任何选项?


附言这是我的第一篇文章,如果我做错了什么,请理解并告诉我。

最佳答案

尝试将排序属性作为从 T 中提取键的 Funcs 传递。

所以:

public static IEnumerable<T> SortEmployeesFor<T>(
IEnumerable<T> list,
Func<T, TProp1> order1,
Func<T, TProp2> order2,
OrderOptions options)
{
switch (options)
{
case OrderOptions.1:
return list.OrderBy(order1).ThenBy(order2);

case OrderOptions.2:
return list.OrderBy(order2).ThenBy(order1);

...
}

return list;
}

用法:

SortEmployeesFor<MyType>(
list,
new Func<MyType, typeOfProp1>(x => x.property1),
new Func<MyType, typeOfProp2>(x => x.property2),
OrderOptions.1);

不知道这在语法上是否完全正确,但它应该为您指明了正确的方向。

关于c# - 特定属性的通用订购方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13286143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com