gpt4 book ai didi

linq - LINQ 可以按列索引排序吗?

转载 作者:行者123 更新时间:2023-12-04 11:28:07 25 4
gpt4 key购买 nike

我正在努力寻找 LINQ orderby 示例,其中数据按列索引排序。这是可能的吗?

谢谢

最佳答案

LINQ 中没有列这样的概念,只有字段和属性。您的意思可能是在您创建的匿名类型中指定属性的索引:

from p in persons
orderby 1
select new { p.FirstNam, p.LastName }

这是不可能的,因为 a) 不能按投影属性(匿名类型的输出值)排序,并且 b) 不能按索引排序。要解决 a),您可以使用“into”关键字:
from p in persons
orderby p.FirstName
select new { First = p.FirstName, Last = p.LastName }
into tmp
orderby tmp.First
select tmp;

如果您使用基于 IQueryable 的 LINQ 提供程序(如 LINQ to SQL,而不是基于 IEnumerable 的 LINQ to objects),您可以解析表达式树,根据某个索引找到表达式,并添加相应的 OrderBy 方法调用.
var query = from p in persons 
select new { Name = p.FirstName + " " + p.LastName, ...}
query = AddOrderByPosition (query, 1);
foreach (var p in query) {...}

AddOrderByPosition 必须创建一个新的表达式树,该树使用原始查询表达式作为源(一个子查询,本质上也是“into”创建的),并在最后添加对 OrderBy 的调用(不需要 Select)。您想先阅读 C# 规范中关于查询表达式转换的章节,并且如果您想在合理的时间内完成这项工作,您应该有一些反射和表达式方面的经验。

如果您需要,我可以提供一些示例代码。

关于linq - LINQ 可以按列索引排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289500/

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