gpt4 book ai didi

linq - 如何使用动态字符串参数执行 OrderBy?

转载 作者:行者123 更新时间:2023-12-03 01:24:23 25 4
gpt4 key购买 nike

我想这样做:

var orderBy = "Nome, Cognome desc";

var timb = time.Timbratures.Include("Anagrafica_Dipendente")
.Where(p => p.CodDipendente == 1);

if(orderBy != "")
timb = timb.OrderBy(orderBy);

是否有可用的 OrderBy 重载接受字符串参数?

最佳答案

如果您使用普通的 LINQ 到对象并且不想依赖外部库,那么实现您想要的并不难。

OrderBy()子句接受 Func<TSource, TKey>从源元素获取排序键。您可以在 OrderBy() 之外定义该函数子句:

Func<Item, Object> orderByFunc = null;

然后您可以根据排序条件将其分配给不同的值:

if (sortOrder == SortOrder.SortByName)
orderByFunc = item => item.Name;
else if (sortOrder == SortOrder.SortByRank)
orderByFunc = item => item.Rank;

然后你可以排序:

var sortedItems = items.OrderBy(orderByFunc);

此示例假设源类型为 Item具有属性 NameRank .

请注意,在此示例中TKeyObject不限制可以排序的属性类型。如果 func 返回值类型(如 Int32 ),它将在排序时被装箱,这有点低效。如果你能约束TKey到特定的值类型,您可以解决此问题。

关于linq - 如何使用动态字符串参数执行 OrderBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2728340/

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