public class TData
{
public int Id { get; set; }
public string StuName { get; set; }
public string ClsName { get; set; }
public decimal Score { get; set; }
}
public class ToolTest
{
[Fact]
public void Test()
{
var list = new List<TData>
{
new TData() { Id = 1, StuName = "zhangsan", ClsName = "1", Score = 70 },
new TData() { Id = 2, StuName = "lisi", ClsName = "1", Score = 80 },
new TData() { Id = 3, StuName = "wangwu", ClsName = "1", Score = 90 },
new TData() { Id = 4, StuName = "liaoliu", ClsName = "1", Score = 100 },
new TData() { Id = 5, StuName = "zhangsan", ClsName = "2", Score = 90 },
new TData() { Id = 6, StuName = "lisi", ClsName = "2", Score = 40 },
new TData() { Id = 7, StuName = "wangwu", ClsName = "2", Score = 50 },
new TData() { Id = 8, StuName = "liaoliu", ClsName = "2", Score = 60 },
};
//var g = list.GroupBy(g => g.ClsName);
var resut1 = list.GroupBy(g => g.ClsName).Select(s => s.Select(s => s.Score).Max());
var resut2 = list.GroupBy(g => g.ClsName).Select(s => s.OrderByDescending(o => o.Score).FirstOrDefault());
}
}
相关推荐
fanuc机器人KAREL程序间参数的传递
之前的课程中讲述过KAREL程序中函数参数的传递,而控制工业机器人的动作只能通过控制TP程序来实现,所以在实际应用中就会出现在不同程序间进行参数的传递。尤其是对于有模块化编程的思想的设计者,更有这种迫切的要求。所以本次课程来讲解一下如何实现在不同程序之间进行参数的传递。 本次课程分为两个部分,以讲解在不同类型程序间进行参数传递的实现方式。 1、TP程序之间传递参数; 2、TP与PC程序之间传递参数。
C#使用Lamda表达式计算排名
我们知道在SQL Server中可以利用Row_Number、Rank等函数进行排名,在MySQL中可以利用变量方式来实现排名,对于计算操作我倾向于放在内存中来操作,而数据库只是做简单的操作,尽管各个数据库可能提供了对应函数来进行处理,但是一旦数据量大时,可能搁置到内存中计算不失为一种好的方式。接下来我们来看看在C#中如何利用LINQ来进行排名,比如我们需要统计截止到当前时间,患者咨询的医生的人次排名(同一患者在同一天咨询同一医生多次只算一次),假设我们从数据库查询出医生姓名和患者咨询医生的次数,如下:
备件管理系统的开发与设计
pb9.0做的程序,虽然有点缺点,但是还是能作为餐卡文件,希望对你有用
list对oracle结果集排序了_SQL 排序获取第一条数据 ROW_NUMBER() OVER() PARTITION BY的使用...
将之前用到的一些sql 记录下来这次介绍的是row_number() over() partition by 的使用首先来看下应用场景:有一张价格 “订单价格设置” 表如下:商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格现在要求选出每个商品价格最大,价格设置时间id最大的那条记录,要求先考虑价格,再考虑设置时间 理想的结果:取出的是第3条记...
linq partition by
static void Main(string[] args) { var beatles = (new[] { new { id=1 , inst = "guitar" , name="john" }, new { id=2 , inst = "guitar" , name="george" }, new { id=3 , inst = "guitar"
sqlserver 分页查询
1.分页查询 ROW_NUMBER() OVER(ORDER BY COLUMMS) IF OBJECT_ID('SysLogInfo','u') IS NULL --不存在用户表 BEGIN CREATE TABLE SysLogInfo( ID NVARCHAR(50) NOT NULL PRIMARY KEY, Name NVARCHAR(50) NULL, ...
SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4<!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face{font-f
My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution
Oracle 和SQL server都有ROW_NUMBER() OVER这个功能函数,主要用于分组排序,而MySQL 却没有 SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY H.ALARMINDEX ORDER BY H.HANDLETIME DESC) N, H.* FROM M_ALARMHAN...
光脚丫学LINQ(003):排序结果集
<br />视频演示:http://u.115.com/file/f2e2959888<br /> <br />通常可以很方便地将返回的数据进行排序。orderby 子句将使返回的序列中的元素按照被排序的类型的默认比较器进行排序。例如,下面的查询可以扩展为按 Name 属性对结果进行排序。因为 Name 是一个字符串,所以默认比较器执行从 A 到 Z 的字母排序。<br />NorthwindDataContext db = new NorthwindDataContext(); var London
基础知识(C#语法、数据库SQL Server)回顾与总结
前言 已经有大概一个多月没有更新博客,可能是开始变得有点懒散了吧,有时候想写,但是又需要额外投入更多的时间去学习,感觉精力完全不够用啊,所以为了弥补这一个多月的潜水,决定写一篇,衔接9月未写博客的空缺。 无需定义实体,返回object类型,如何获取属性值? 这样的场景在下拉列表中很常见,在下拉列表中我们只需要Id和Name两个字段,无需其他字段,同时也是为了节约流量,例如实体和数
C#数组(超级深度解析C#数组)
这份 C# 数组深度教程,从内存底层布局一路延伸到项目实战,把一维数组、多维矩形数组、交错数组讲得通透透彻。不只停留在基础语法,拆解了托管堆内存结构、零基索引原理、Array.Resize 的底层真相,理清空数组与 null 数组的大坑。 教程涵盖遍历、排序、二分查找等经典算法,对比二维数组与交错数组性能差异,剖析数组协变隐患,还加入 Span 零拷贝、内存缓存优化、图像像素处理等前沿实战内容。同时整理高频 bug 与面试真题,兼顾课堂学习、刷题训练与 AI 视觉开发,零基础能看懂,老手也能夯实底层功底。
Oracle SQL实战:高效查询与性能优化技巧
SQL作为关系型数据库的核心查询语言,其优化技巧直接影响系统性能。Oracle数据库特有的分析函数、递归查询等高级特性,能够高效处理复杂业务场景。通过合理使用MERGE替代UPDATE、利用FORALL加速批量操作等技术手段,可显著提升DML效率。在生产环境中,结合执行计划分析、统计信息收集等优化方法,能有效解决80%的性能瓶颈问题。本文分享的Oracle分页查询、空间管理等实用脚本,特别适合中高级开发者处理实际业务中的数据处理与系统调优需求。
C# LINQ常用操作方法——提升你的编程效率
C# LINQ是一个强大而灵活的查询工具,它能够显著提高开发人员的编程效率。本文介绍了一些常用的LINQ操作方法,从基础的查询操作到更复杂的进阶操作,希望能帮助你更好地应用LINQ进行数据查询与处理。通过灵活运用这些操作方法,你能够更快速、简洁地处理各种数据操作需求。对于那些有大量数据处理需求的开发人员来说,LINQ是不可或缺的工具。MSDN文档:https://docs.microsoft.com/en-us/dotnet/api/system.linq.queryable?
C#提高LINQ运行效率的PLINQ
这里有两个关键词,一个是“并行”,另一个是“扩展”,所谓并行是相对于程序顺序来说说的,LINQ是顺序执行的,而PLINQ的并行执行弥补了LINQ同步执行的效率,当然根据使用情况的不同来选择,比如数据量很小就体现不出PLINQ的优势了。如果查询不执行大量的计算,或者如果数据源较小,则 PLINQ 查询的速度可能比顺序 LINQ to Objects 查询的速度慢。首先来了解一下什么是Plinq,我们来看看官方的描述:并行 LINQ (PLINQ) 是语言集成查询 (LINQ) 模式的并行实现。
Linq成绩分组
int[] scores = { 15, 37, 50, 77, 91, 23, 48, 60, 83, 100 }; var scoreGroup = from score in scores orderby score descending// 先由高到低排序
C#学习相关系列之Linq常用方法---排序(一)
本文介绍了C#中linq数据操作中的排序相关用法
MS SQL Server partition by 函数实战二 编排考场人员
假设有若干已分配准考证号的考生,准考证号示例(01010001)共计8位,前4位为分类号,后4位为分类下的总排序号。现提供考场分配信息EXCEL文件(包括考场编号 、考场名称、考场容纳人数等),希望根据准考证号升序,将考生分配于对应的考场中,并生成对应的座位号(也即每一个考场的排序号),即分配原则为准考证号越小,考场号和座位号越靠前。本文将介绍利用partition by 、c# 来实现这一需求
linqlist 分组 每组前n条记录_Part15:SQL高级功能-窗口函数(解决分组排名问题,比如topN问题)...
一、What?二、Why?之前学过的group by子句分组的功能和order by子句排序的功能。那么,为什么还要用窗口函数呢?group by分组汇总后改变了表的行数,一行只有一个类别。而partiition by和rank函数不会减少原表中的行数。例如下面统计每个班级的人数。三、How?要实现在每个组内排名,具体如何使用?基本语法如下:‹窗口函数› 解释:partiition by(分组)和...
rank() over 的用法
创建一个test表,并插入6条数据。 CREATE TABLE test ( a INT, b INT, c CHAR ) INSERT INTO test VALUES(1,3,‘E’) INSERT INTO test VALUES(2,4,‘A’) INSERT INTO test VALUES(3,2,‘D’) INSERT INTO test VALUES(3,5,‘B’) INSERT INTO test VALUES(4,2,‘C’) INSERT INTO test VALUES(2,4,‘
C# Linq 文档(四)
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。查询表达式采用声明性查询语法编写而成。
分区函数Partition By的用法
group by是分组函数,partition by是分区函数(像sum()等是聚合函数),注意区分。 1、over函数的写法: over(partition by cno order by degree ) 先对cno 中相同的进行分区,在cno 中相同的情况下对degree 进行排序 2、分区函数Partition By与rank()的用法“对比”分区函数Partition By与row_number()的用法 例:查询每名课程的第一名的成绩 (1)使用rank() SELECT *
2674



被折叠的 条评论
为什么被折叠?



