gpt4 book ai didi

c# - 带有通用参数的 dotnet .net core 2 OrderBy/OrderByDescending

转载 作者:行者123 更新时间:2023-11-30 20:28:52 24 4
gpt4 key购买 nike

我想创建一种动态方式来返回按参数 xy 排序的列表。该列表可以按 ID、用户名、邮件等进行降序、升序排序。

我收到这个参数作为字符串。例如 sort=-username

减号表示列表降序。排序参数是用户名。

所以我返回 user.OrderByDescending(o => o.Username).ToList();

目前,在长 if-else 结构的帮助下,我检测到需要哪种排序。

我希望我可以借助一个函数将排序字符串参数替换为对象参数。

伪代码

//input for example: sort=-username
Boolean isAscending = isAscending(sort) //return true or false
var parameter = isSortStringInsideObject(sort) //
if (isAscending) {
user.OrderBy(o => o.parameter).ToList();
} else {
user.OrderByDescending(o => o.parameter).ToList();
}

所以参数可以是对象中的每一个参数。

我是 .net Core 的新手。所以我希望我没有制定一个乌托邦式的要求。

最佳答案

像这样的东西应该可以解决问题(使用反射):

var isAscending = GetIsAscending(sort);
var pi = typeof(User).GetProperty(parameter);
if (pi != null)
user = isAscending
? user.OrderBy(a => pi.GetValue(a, null))
: user.OrderByDescending(a => pi.GetValue(a, null));

关于c# - 带有通用参数的 dotnet .net core 2 OrderBy/OrderByDescending,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813664/

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