**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
11天前关闭。
Improve this question
我正在努力寻找LINQ orderby的例子,其中数据是按列索引排序的。这可能吗?
谢谢你
**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
11天前关闭。
Improve this question
我正在努力寻找LINQ orderby的例子,其中数据是按列索引排序的。这可能吗?
谢谢你
6条答案
按热度按时间sqyvllje1#
在LINQ中没有列的概念,只有字段和属性。您的意思可能是在您创建的匿名类型中指定属性的索引:
这是不可能的,因为a)你不能按投影属性(匿名类型的输出值)排序,b)你不能按索引排序。要解决a),你可以使用“into”关键字:
如果使用基于IQueryable的LINQ提供程序(类似于LINQ to SQL,而不是基于IEnumerable的LINQ to对象),则可以分析表达式树,根据某个索引查找表达式,并添加相应的OrderBy方法调用。
AddOrderByPosition必须创建一个新的表达式树,该表达式树使用原始查询表达式作为源(一个子查询,本质上也是“into”创建的),并在末尾添加对OrderBy的调用(不需要Select).您需要先阅读C#规范中有关查询表达式转换的章节,如果你想在合理时间内完成这件事,你应该有一些关于反射和表达的经验。
如果你想要的话,我可以提供一些示例代码。
qkf9rpyu2#
我知道不可能更改索引。
xfyts7mz3#
如果是这样的话,下面是我的一个Linq查询的例子:
px9o7tmv4#
在LinqToSql中,您有一个Map到数据库的类,其属性名称不会更改。这些属性使用属性(Attribute)Map到数据库。数据库列名位于属性(Attribute)中。
如果您要在设计阶段变更数据行名称,可以使用设计工具(如果类别是自动产生的)或自行变更属性。
如果要在运行时更改列名,则应提供XmlMappingSource。这将覆盖来自属性的Map。
vhmi4jdf5#
今天早些时候我不得不这样做(但是使用多个列--甚至更难)。LINQ肯定不适合我,特别是在传递动态数量的索引时。
你可能运气更好,把你的对象拉到一个
List<T>
中,然后对它们使用.Sort
方法。hs1rzwqc6#
假设您有一个字符串数组,每个字符串都包含结构化文本,其中包含固定数量的数据列(字段)。(类似于这种数据,如果它是在文本文件中,您可能会使用命令行工具,如'awk'。)那么下面的C#代码演示了如何使用LINQ按特定列进行排序:
在上图中,我们按第4列排序,这是一个数字。