EF 汇总函数使用注意事项Max()/Min()等
一、字符串类型最大值
1.字符串类型的最大值,和数据库的字典排序最后一个相同,如果存在返回null
- //字符串最大值,是字典排序最后一个
- string max1 = _context.students.Max(q => q.sname);
- Console.WriteLine(max1);
- //字符串最大值,如果不存在返回null
- string max2 = _context.students
- .Where(q => false)
- .Max(q => q.sname);
- Console.WriteLine(max2);
- Console.WriteLine(max2 == null); //True
- Console.WriteLine(max2 == ""); //False
//字符串最大值,是字典排序最后一个
string max1 = _context.students.Max(q => q.sname);
Console.WriteLine(max1); //字符串最大值,如果不存在返回null
string max2 = _context.students
.Where(q => false)
.Max(q => q.sname);
Console.WriteLine(max2);
Console.WriteLine(max2 == null); //True
Console.WriteLine(max2 == ""); //False
二、数字类型最大值
1.数字类型最大值,和数据库字段排序最后一个相同,如果没有数据抛出异常。
- //数字类型,获取最大值为正序排列最后一个值
- decimal deci1 = _context.scores.Max(q => q.degree);
- Console.WriteLine(deci1);
//数字类型,获取最大值为正序排列最后一个值
decimal deci1 = _context.scores.Max(q => q.degree);
Console.WriteLine(deci1);
数字类型,获取条件的数据不存在抛出异常
其他信息: 到值类型“System.Decimal”的强制转换失败,因为具体化值为 null。
结果类型的泛型参数或查询必须使用可以为 null 的类型。
- decimal deci2 = _context.scores.Where(q => false).Max(q => q.degree);
- Console.WriteLine(deci2);
decimal deci2 = _context.scores.Where(q => false).Max(q => q.degree);
Console.WriteLine(deci2);
解决方案1:
- //解决方案1,使用DefaultIfEmpty(),推荐
- var query = _context.scores.Where(q => false)
- .Select(q => q.degree)
- .DefaultIfEmpty();
- Console.WriteLine(query.ToString());
- decimal deci3 = query
- .Max();
- Console.WriteLine(deci3);
//解决方案1,使用DefaultIfEmpty(),推荐
var query = _context.scores.Where(q => false)
.Select(q => q.degree)
.DefaultIfEmpty();
Console.WriteLine(query.ToString());
decimal deci3 = query
.Max();
Console.WriteLine(deci3);
生成sql如下:
解决方案2:
- //解决方案2,先判断再取值,执行两次数据库查询
- decimal deci4 = 0;
- if (_context.scores.Any())
- {
- deci4 = _context.scores.Max(q => q.degree);
- }
- Console.WriteLine(deci4);
//解决方案2,先判断再取值,执行两次数据库查询
decimal deci4 = 0;
if (_context.scores.Any())
{
deci4 = _context.scores.Max(q => q.degree);
}
Console.WriteLine(deci4);
解决方案3:
- //解决方案3,内存取最大值
- decimal deci5 = _context.scores
- .Select(q => q.degree)
- .ToList()
- .Max();
- Console.WriteLine(deci5);
//解决方案3,内存取最大值
decimal deci5 = _context.scores
.Select(q => q.degree)
.ToList()
.Max();
Console.WriteLine(deci5);
EF 汇总函数使用注意事项Max()/Min()等的更多相关文章
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) from ...
- 74.Python中ORM聚合函数详解:Max,Min
Max和Min:获取指定对象的最大值和最小值. 1. 比如:想要获取Author表中的最大的年龄和最小的年龄.示例代码如下: from django.http import HttpResponse ...
- MySQL之汇总数据(AVG,COUNT,MAX,MIN,SUM)
table test Field Type Null Key Default Extra id int(11) NO PRI NULL auto_increment name char(50) NO ...
- 聚合函数:sum,avg,max,min,count
group by 分组的使用方法 数学函数:ABS.ceiling.floor.power.round.sqrt.square 练习:
- max,min,Zip函数(十一)
zip函数,拉链,传两个有序的参数,将他们一一对应为元祖形式 max,min比较默认比较一个元素,处理的是可迭代对象,相当于for循环取出每个元素进行比较,注意:不同类型之间不可比较 #!/usr/b ...
- group by与avg(),max(),min(),sum()函数的关系
数据库表: create table pay_report( rdate varchar(8), --日期 region_id varchar(4), --地市 ...
- MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Max, Min, Count , DistinctCount 以及其它 TopCount, Generate
MDX 中最大值和最小值 MDX 中最大值和最小值函数的语法和之前看到的 Sum 以及 Aggregate 等聚合函数基本上是一样的: Max( {Set} [, Expression]) Min( ...
- Python之路Python内置函数、zip()、max()、min()
Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...
- SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum avg() 函数 定义和用法 AVG 函数返回数值列的平均值.NULL ...
随机推荐
- Qt5.4.1_静态编译
http://www.cnblogs.com/findumars/p/4852350.html http://godebug.org/index.php/archives/133/ http://ww ...
- 雷林鹏分享:Ruby 数组(Array)
Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负 ...
- MySQL数据库安装和Navicat for MySQL配合使用
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司. MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...
- bzoj2120: 数颜色 带修莫队
墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. R P ...
- java反射教程
什么是反射,为什么它是有用的,以及如何使用它? 1.什么是反射? “反射通常是JVM中运行的程序需要检测和修改运行时程序的行为的一种能力.”这个概念通常与内省(Introspection)混淆.以下是 ...
- 047——VUE中css过渡动作实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 转载-lvs-dr模式+keepalived双机
lvs+keepalived实现高可用群集配置详解 Mon 16 April 2012 来源: https://www.linuxzen.com/lvskeepalivedshi-xian-gao-k ...
- ubuntu 11.04 old sources.list
#deb cdrom:[Ubuntu 11.04 _Natty Narwhal_ - Release amd64 (20110427.1)]/ natty main restricted # See ...
- 深度学习 循环神经网络 LSTM 示例
最近在网上找到了一个使用LSTM 网络解决 世界银行中各国 GDP预测的一个问题,感觉比较实用,毕竟这是找到的唯一一个可以正确运行的程序. #encoding:UTF-8 import pandas ...
- C语言--第三次作业
要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路 (1)主要描述题目算法 第一步:将月份分别赋值: 第二步:利用switch语句,输 ...