一、字符串类型最大值

1.字符串类型的最大值,和数据库的字典排序最后一个相同,如果存在返回null

  1. //字符串最大值,是字典排序最后一个
  2. string max1 = _context.students.Max(q => q.sname);
  3. Console.WriteLine(max1);
  4. //字符串最大值,如果不存在返回null
  5. string max2 = _context.students
  6. .Where(q => false)
  7. .Max(q => q.sname);
  8. Console.WriteLine(max2);
  9. Console.WriteLine(max2 == null); //True
  10. 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.数字类型最大值,和数据库字段排序最后一个相同,如果没有数据抛出异常。

  1. //数字类型,获取最大值为正序排列最后一个值
  2. decimal deci1 = _context.scores.Max(q => q.degree);
  3. Console.WriteLine(deci1);
//数字类型,获取最大值为正序排列最后一个值
decimal deci1 = _context.scores.Max(q => q.degree);
Console.WriteLine(deci1);

数字类型,获取条件的数据不存在抛出异常
其他信息: 到值类型“System.Decimal”的强制转换失败,因为具体化值为 null。
结果类型的泛型参数或查询必须使用可以为 null 的类型。

  1. decimal deci2 = _context.scores.Where(q => false).Max(q => q.degree);
  2. Console.WriteLine(deci2);
decimal deci2 = _context.scores.Where(q => false).Max(q => q.degree);
Console.WriteLine(deci2);

解决方案1:

  1. //解决方案1,使用DefaultIfEmpty(),推荐
  2. var query = _context.scores.Where(q => false)
  3. .Select(q => q.degree)
  4. .DefaultIfEmpty();
  5. Console.WriteLine(query.ToString());
  6. decimal deci3 = query
  7. .Max();
  8. 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:

  1. //解决方案2,先判断再取值,执行两次数据库查询
  2. decimal deci4 = 0;
  3. if (_context.scores.Any())
  4. {
  5. deci4 = _context.scores.Max(q => q.degree);
  6. }
  7. Console.WriteLine(deci4);
//解决方案2,先判断再取值,执行两次数据库查询
decimal deci4 = 0;
if (_context.scores.Any())
{
deci4 = _context.scores.Max(q => q.degree);
}
Console.WriteLine(deci4);

解决方案3:

  1. //解决方案3,内存取最大值
  2. decimal deci5 = _context.scores
  3. .Select(q => q.degree)
  4. .ToList()
  5. .Max();
  6. Console.WriteLine(deci5);
//解决方案3,内存取最大值
decimal deci5 = _context.scores
.Select(q => q.degree)
.ToList()
.Max();
Console.WriteLine(deci5);

EF 汇总函数使用注意事项Max()/Min()等的更多相关文章

  1. 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 ...

  2. 74.Python中ORM聚合函数详解:Max,Min

    Max和Min:获取指定对象的最大值和最小值. 1. 比如:想要获取Author表中的最大的年龄和最小的年龄.示例代码如下: from django.http import HttpResponse ...

  3. 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 ...

  4. 聚合函数:sum,avg,max,min,count

    group by  分组的使用方法 数学函数:ABS.ceiling.floor.power.round.sqrt.square 练习:

  5. max,min,Zip函数(十一)

    zip函数,拉链,传两个有序的参数,将他们一一对应为元祖形式 max,min比较默认比较一个元素,处理的是可迭代对象,相当于for循环取出每个元素进行比较,注意:不同类型之间不可比较 #!/usr/b ...

  6. group by与avg(),max(),min(),sum()函数的关系

    数据库表: create table pay_report(     rdate varchar(8),     --日期     region_id varchar(4),    --地市      ...

  7. MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Max, Min, Count , DistinctCount 以及其它 TopCount, Generate

    MDX 中最大值和最小值 MDX 中最大值和最小值函数的语法和之前看到的 Sum 以及 Aggregate 等聚合函数基本上是一样的: Max( {Set} [, Expression]) Min( ...

  8. Python之路Python内置函数、zip()、max()、min()

    Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...

  9. SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum

    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum avg() 函数 定义和用法 AVG 函数返回数值列的平均值.NULL ...

随机推荐

  1. IE8 JSON is not defined

    问题原因: 昨天遇到了一个问题.就是用ajax从后台查询数据时,返回信息无法显示,经过提示发现是IE控制台提示: JSON is not defined 错误. 而且这个问题在本人自己的电脑上是不存在 ...

  2. Linux命令详解-whatis

    描述一个命令执行什么功能. 1.命令格式: whatis [ -M PathName ] Command ... 2.命令功能: 描述一个命令执行什么功能. 3.命令参数:     -M PathNa ...

  3. idea中解决Git反复输入代码的问题

    打开git终端,或者idea中的插件终端,输入命令: git config --global credential.helper store 借用一下别人的图不要介意哈.......... 执行上述命 ...

  4. 【MVC】MusicStore相关资料

    引言 当你对MVC的项目结构有一定了解时,那就可以开始学习一个世界级的MVC入门demo--MusicStore.学习的绝招就是把它抄一遍. 相关资料 MVC Music Store  Codeple ...

  5. 几句话概括理查德成熟度模型(RESTful)

    近期做的项目中准备引入RESTful风格,特地进行了一些学习,其中比较重点的有一个理查德成熟度模型(Richardson Maturity Model),模型提出了四个等级(0-3),如下图 其中只有 ...

  6. 让IE兼容console——“由于出现错误80020101而导致此项操作无法完成”的解决方案

    问题描述 经测试发现问题只出现在: 1.原生IE8(其他版本IE模拟出的IE8无此问题) 2.从打开IE8没有开启过F12(曾经开启过又关闭的无此问题) IE8报错“由于出现错误80020101而导致 ...

  7. 201621123010 《Java程序设计》第1周学习总结

    1. 本周学习总结 本周主要学习了五个知识点 Java是面向对象的语言 JDK,JRE,JVM的联系 javac及java指令 Java跨平台运行的原理 新概念:类,类是面向对象中的概念 2. 书面作 ...

  8. HTML, CSS. JS的各种奇淫技巧

    1. js 中为了省字节,性能, 防止被重写等发明了各种写法,记录下 //取整 parseInt(a,10); //Before Math.floor(a); //Before a>>0; ...

  9. mongdb分布式

    搭建高可用mongodb集群(一)——配置mongodb Posted on 17 十一月, 2013 by lanceyan | 21 Replies 在大数据的时代,传统的关系型数据库要能更高的服 ...

  10. 利用 Create React Native App 快速创建 React Native 应用

    本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...