【100分问题】Linq 查询排序

anycall2004 anycall2004 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

classA 的结构如下
{
int Index;
string Number;
}

有个类的集合 Dictionary<int, ClassA>

{
0 , new ClassA(1 , + ) ,
1 , new ClassA(2 , 3 ) ,
2 , new ClassA(3 , - ) ,
3 , new ClassA(4 , 1 ) ,
4 , new ClassA(5 , - ) ,
5 , new ClassA(6 , + ) ,
6 , new ClassA(7 , 2 ) ,
7 , new ClassA(8 , 3 ) ,
8 , new ClassA(9 , 1 ) ,
9 , new ClassA(10 , - ) ,
}

+ 的位置永远不动
- 放在同组一起按照index排序
其他的按照number排序

如何通过一句linq语句达到这个目的呢?

例如上面升序结果

0 , new ClassA(1 , + ) ,
3 , new ClassA(4 , 1 ) ,
1 , new ClassA(2 , 3 ) ,
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,
5 , new ClassA(6 , + ) ,
8 , new ClassA(9 , 1 ) ,
6 , new ClassA(7 , 2 ) ,
7 , new ClassA(8 , 3 ) ,
9 , new ClassA(10 , - ) ,
降序结果
0 , new ClassA(1 , + ) ,
1 , new ClassA(2 , 3 ) ,
3 , new ClassA(4 , 1 ) ,
2 , new ClassA(3 , - ) ,
4 , new ClassA(5 , - ) ,
5 , new ClassA(6 , + ) ,
7 , new ClassA(8 , 3 ) ,
6 , new ClassA(7 , 2 ) ,
8 , new ClassA(9 , 1 ) ,
9 , new ClassA(10 , - ) ,
...全文

相关推荐

SQL vs LINQ:10个关键查询,为什么高级.NET开发都用LINQ?

文章摘要(149字) LINQ相比SQL的优势在于强类型检查、编译时错误捕获及统一查询模型。本文通过8个典型场景对比SQL与LINQ的正确写法:1)基础查询应直接用ToList();2)条件筛选使用Where和C#运算符;3)排序推荐链式调用OrderBy;4)聚合函数直接调用Count;5)分组使用GroupBy+Select;6)连接操作优先Join方法;7)去重用Distinct;8)分页采用Skip+Take。错误写法易导致性能下降(最高达500%),正确实践可提升代码可读性与执行效率。 (注:摘要

墨瑾轩

Linq to Entity动态查询与匿名类型实战

是命名空间下的一个类,它为IQueryable接口提供了一组扩展方法,允许使用字符串表达式代替传统的 Lambda 表达式进行查询。这些方法包括:例如:与传统的 LINQ 查询相比,这种方式允许在运行时构建查询条件,而不是在编译时固定逻辑。除了返回匿名类型,也可以通过自定义类来接收查询结果,提升数据结构的可维护性。set;set;set;参数说明:UserInfo是一个自定义类型,用于接收查询结果。表示最终投影结果将映射到该类型。

Salton Z

C#动态查询革命:如何用System.Linq.Dynamic.Core让LINQ效率飙升300%?

摘要: System.Linq.Dynamic.Core 解决了传统LINQ硬编码查询的冗余、扩展性差等问题,支持动态构建LINQ表达式。通过字符串转换实现条件过滤(Where)、排序(OrderBy)、分页等操作,与EF Core无缝集成并可生成SQL。核心功能包括动态解析嵌套属性、集合操作(Any/All),提供类型安全检查和表达式缓存优化。企业级应用可通过组合条件实现复杂查询,但需注意SQL注入风险和性能优化(如缓存高频表达式)。适用于电商订单查询等动态场景,显著提升开发效率。

墨夶

C# LINQ与SQL Server联合查询:如何获取最新的记录

本文介绍了在.NET环境下使用LINQ与SQL Server进行连表查询,并获取每组数据中的最新记录的方法。通过模拟Customers和Orders表结构,演示了如何利用LINQ的Join、GroupBy和OrderByDescending等操作查询每个客户的最新订单。文章提供了完整的C#代码示例,并解析了查询逻辑,最终输出客户名称、最新订单ID、日期和金额。还讨论了性能优化建议,如索引优化和分页查询,以及LINQ与SQL的性能差异。这种方法提高了代码可读性和开发效率,适用于企业级应用的数据处理需求。

威哥说编程

C#与LINQ的绝妙结合:解锁查询表达式的无限潜能

LINQ是微软为.NET平台设计的一种通用查询机制,它允许开发者使用类似SQL的语法直接在代码内部对集合对象进行筛选、排序、分组等操作。无论是内存中的列表、数据库记录还是XML文档,只要实现了IEnumerable或IQueryable接口的数据源,都可以成为LINQ查询的目标。

墨夶
评论 6
收藏 已收藏
分享
返回顶部
anycall2004
LINQ 8,492 成员 4,736 内容