首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LINQ查询除了不工作外,List <long?> vs. List <long>

首先,我们来了解一下LINQ查询。LINQ(Language Integrated Query)是一种强大的查询技术,它允许开发者使用C#或者Visual Basic语言编写强类型的查询表达式,而不需要编写SQL语句。LINQ查询可以用于对象、XML文档、SQL数据库等多种数据源进行查询和操作。

在这个问题中,我们将讨论两种不同的List类型:List<long?>和List<long>。这两种类型都是泛型集合类型,用于存储一系列的元素。其中,List<long?>表示一个可空的long类型的列表,而List<long>表示一个非可空的long类型的列表。

首先,我们来了解一下List<long?>和List<long>的区别:

  1. 空值差异:List<long?>可以包含空值(null),而List<long>不允许包含空值。
  2. 性能差异:由于List<long?>需要处理可空值,因此在某些情况下,性能可能会低于List<long>。
  3. 类型安全差异:List<long?>需要进行额外的空值检查,以确保类型安全。

接下来,我们来看一下如何使用LINQ查询来处理这两种类型的列表:

代码语言:csharp
复制
// 创建一个List<long?>
List<long?> nullableList = new List<long?> { 1, 2, null, 4, 5 };

// 使用LINQ查询筛选出非空值
var nonNullValues = from value in nullableList
                    where value.HasValue
                    select value.Value;

// 输出结果:1, 2, 4, 5
foreach (var value in nonNullValues)
{
    Console.WriteLine(value);
}

// 创建一个List<long>
List<long> nonNullableList = new List<long> { 1, 2, 3, 4, 5 };

// 使用LINQ查询筛选出大于2的值
var greaterThanTwo = from value in nonNullableList
                     where value > 2
                     select value;

// 输出结果:3, 4, 5
foreach (var value in greaterThanTwo)
{
    Console.WriteLine(value);
}

总结:LINQ查询除了不工作外,List<long?>和List<long>的区别在于List<long?>允许包含空值,而List<long>不允许包含空值。在使用LINQ查询时,需要根据具体的数据类型和需求来选择合适的列表类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#进阶-LINQ实现对集合的增删改查

一、LINQ表达式学前准备在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。... list = new List(){ new User { id = 1, name = "Zhang Long", age = 38, gender = true, occupation...在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,创建Salary对象和包含Salary对象的集合,作为后面查询和输出的数据源。...:C#进阶-LINQ表达式基础语法Ⅰ、C#进阶-LINQ表达式基础语法Ⅱ;多表查询参考:多表查询 Ⅰ(交集、并集、差集、去重)、多表查询 Ⅱ(Join连接查询);分组查询参考:分组查询 (GroupBy...虽然LINQ自身直接支持修改操作(增、删、改),但它可以与其他.NET功能如List的方法配合使用,来实现集合的完整管理。下面将详细介绍如何结合LINQ进行集合的增删改查操作。

13100

C#进阶-LINQ表达式之多表查询

本篇文章我们将演示LINQ扩展包基础语法里的多表查询 ,以Join连接查询为主要内容。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...多表查询Ⅱ 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,创建Salary对象和包含Salary对象的集合,作为后面查询和输出的数据源,参见这篇文章C#进阶之LINQ...表达式总结完成准备工作。...同样,Linq的join方法也有两种写法: /* C#写法1 */ IEnumerable SalaryList = from u in list join s...如上面两张表,数据表2的user_id是数据表1的键,对应数据表1的id,可以通过关联查询把两张表不同的属性通过用户一一对应。

31510
  • C#进阶-LINQ表达式之多表查询(Join连接篇)

    本篇文章我们将演示LINQ扩展包基础语法里的多表查询 ,以Join连接查询为主要内容。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...一、LINQ表达式学前准备在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。... list = new List(){ new User { id = 1, name = "Zhang Long", age = 38, gender = true, occupation...同样,Linq的join方法也有两种写法:/* C#写法1 */IEnumerable SalaryList = from u in list join s in...,数据表2的user_id是数据表1的键,对应数据表1的id,可以通过关联查询把两张表不同的属性通过用户一一对应。

    2.1K21

    C#进阶-LINQ表达式之多表查询

    本篇文章我们将演示LINQ扩展包基础语法里的多表查询 ,包括交集、并集、差集、去重、合并等实际操作中常用的类型转换手法。...目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...多表查询Ⅰ 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,创建Salary对象和包含Salary对象的集合,作为后面查询和输出的数据源,参见这篇文章C#进阶之LINQ...表达式总结完成准备工作。.../*同样需要上面求交集时的比较对象*/ /*查询年龄大于25的用户集合,投影存储他们的姓名和职业*/ List user_list = list.Where(u => u.age > 25

    24010

    C#进阶-LINQ表达式之多表查询(基础篇)

    本篇文章我们将演示LINQ扩展包基础语法里的多表查询 ,包括交集、并集、差集、去重、合并等实际操作中常用的类型转换手法。...一、LINQ表达式学前准备 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。...name, m = i2.occupation }); 三、LINQ表达式多表查询总结 LINQ (Language Integrated Query) 在处理多表查询时展现了其强大和灵活的能力,类似于...利用LINQ进行多表查询不仅可以提高数据处理的效率,还可以在查询时直接利用C#或VB.NET的语法特性,使代码更加直观和易于维护。...多表查询LINQ中非常强大的功能之一,它通过提供类似SQL的查询能力,使得数据处理变得更加简单和直观。正确利用LINQ进行多表查询,不仅可以提高开发效率,还能使代码更加清晰和易于维护。

    25610

    C#进阶-LINQ实现对集合的增删改查

    前面的章节细致介绍了LINQ扩展包的具体方法使用,本篇则是演示LINQ在日常开发中的常用操作,实现结果集的增删改查。...目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,创建Salary对象和包含Salary对象的集合,作为后面查询和输出的数据源,参见这篇文章C#进阶之LINQ表达式总结完成准备工作...; foreach (User userDelete in maps){ list.Remove(userDelete); } /* 输出结果 */ {id = 1, name = Zhang Long...基础查询参考:C#进阶-LINQ表达式基础语法Ⅰ、C#进阶-LINQ表达式基础语法Ⅱ; 多表查询参考:多表查询 Ⅰ(交集、并集、差集、去重)、多表查询 Ⅱ(Join连接查询); 分组查询参考:分组查询

    19400

    C#进阶-LINQ表达式之GroupBy分组查询

    本篇文章我们将演示LINQ扩展包基础语法里的GroupBy分组查询,并实现投影等实际操作中常用的类型转换手法。...目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...一、LINQ表达式学前准备在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。... list = new List(){ new User { id = 1, name = "Zhang Long", age = 38, gender = true, occupation...这种分组操作对于数据聚合、统计或复杂的查询尤为重要。GroupBy 在处理数据库查询、内存中的集合等场合中广泛应用,它提供了一个灵活而强大的方式来组织数据和提取信息。

    70321

    C#进阶-LINQ表达式之GroupBy分组查询

    本篇文章我们将演示LINQ扩展包基础语法里的GroupBy分组查询,并实现投影等实际操作中常用的类型转换手法。...目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...LINQ语法第一次接触难免感到陌生,最好的学习方式就是在项目中多去使用,相信会有很多感悟。...分组查询 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源,参见这篇文章C#进阶之LINQ表达式总结完成准备工作。...) { Console.WriteLine(PrintUserObject(user)); } } /* 输出结果 */ Teacher {id = 1, name = Zhang Long

    1.1K10

    C#进阶-LINQ表达式之投影

    本篇文章我们将演示LINQ扩展包语法里的投影特性,用投影实现LINQ结果集的类型转换。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...一、LINQ表达式学前准备 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。... list = new List() { new User { id = 1, name = "Zhang Long", age = 38, gender = true,...= "Liu Jin", age = 21, gender = true, occupation = "Builder"}, new User { id = 8, name = "Jiang Long...这一功能提高了查询的灵活性和数据处理的效率。 投影的使用场景: 数据报告和分析:创建符合特定报告需求的数据结构,如统计分析、图表生成等。

    12721

    Dapper.Common基于Dapper的开源LINQ超轻量扩展

    Dapper.Common是基于Dapper的LINQ实现,支持.net core,遵循Linq语法规则、链式调用、配置简单、上手快,支持Mysql,Sqlserver(目前只实现了这两个数据库,实现其他数据库也很轻松...严格区分C#函数和数据库函数,你可以在表达式中调用C#函数(推荐,推荐将计算结果保存到变量,在写入lambda表达式),性能损失在表达式编译:常量>变量>函数。...映射 public class User { /// /// 如果表名与字段名一致,可以不用Column进行注解,主键采用类型的第一个属性【推荐】....Select(); 6.Where //构建动态查询,condition: true执行,通过condition选择分支,多个where之间用 and 连接 var list =...= null) .Page(1,10,out long total) .Select(); 12.Take var list = session.From()

    3.2K40

    一、简单使用二、 并行循环的中断和跳出三、并行循环中为数组集合添加项四、返回集合运算结果含有局部变量的并行循环五、PLinq(Linq的并行计算)

    data = Program.Data; long total = 0; //这里定义返回值为long类型方便下面各个参数的解释 Parallel.For(0,...五、PLinq(Linq的并行计算) 上面介绍完了For和ForEach的并行计算盛宴,微软也没忘记在Linq中加入并行计算。下面介绍Linq中的并行计算。...4.0中在System.Linq命名空间下加入了下面几个新的类: 类 说明 ParallelEnumerable 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。...指定如果可能,应并行化查询的其余部分。 AsSequential() 指定查询的其余部分应像非并行 LINQ 查询一样按顺序运行。...ForAll() 多线程枚举方法,与循环访问查询结果不同,它允许在首先合并回到使用者线程的情况下并行处理结果。

    2.6K61

    C# 基础知识系列- 8 Linq最后一部分查询表达式语法实践

    1 前言 之前的几篇文章介绍了Lambda和Linq的一些支持方法。这一篇我尝试通过模拟具体的业务场景来描述一下Linq的两种查询方式的使用。...一直提的Linq查询方式分为两种,一种就是方法链的形式,官方的称呼是流式查询;另一种是类似于SQL语句的查询方式,我之前叫做类SQL查询方式,不过有的文档称之为查询表达式。...1.1 数据准备: 因为这篇内容会涉及到多个数据源,所以这里需要准备一些类和数据,以下数据纯属虚构,涉及到现实。...// 科目列表,忽略数据来源 List exams = new List();// 考试列表,忽略数据来源 2 查询演示 预先介绍一个概念,C#中有一种类型叫做匿名类型。...对于熟悉SQL的人,查询表达式能更快的上手;对于我来说,更习惯于用流式查询,不过在多数据源联合的时候,我更倾向于写查询表达式。以上是基础篇Linq的全部内容。

    1.1K40

    C#进阶-LINQ表达式基础语法

    本篇文章我们将演示LINQ扩展包的基础语法,以Select查询、Count计数、Average平均值、OrderBy排序函数为例,目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,...一、LINQ表达式学前准备在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。... list = new List(){ new User { id = 1, name = "Zhang Long", age = 38, gender = true, occupation...1、LINQ表达式的特点集成性:Linq表达式完美集成于C#和VB.NET等语言,提供一致的查询能力。可读性:Linq语法简洁,易于编写和理解,大大提高了代码的可读性。...to Entities关系型和非关系型数据库高5/5支持复杂的数据查询和操作Linq to Objects内存中的对象集合低5/5适用于小型集合的快速查询3、LINQ表达式总结Linq技术为.NET开发者提供了一个强大的工具

    13221

    EntityFramework 键值映射

    可以看到,Student 表中的 ClassId 值是 0,而并不是我们预想的 1,这是一个问题,在增加键的情况下,我们一般会这样解决: static void Main(string[] args...我们解决这个问题的前提条件是“增加键配置”,所以我们要让 EF 忽略实体更改: public SchoolDbContext() : base("db_school"){ Database.SetInitializer...在实际上表的键类型可能是很多种的,如可能是常见的字符类型,也可能是int类型,也可能是long类型等等。...这些错误就是主键类型匹配导致的,我们操作这些接口的时候,一定要传入对应类型给它们,才能正常的处理。...在实体框架界面层的查询中,我们也不在使用部分SQL的条件做法了,采用更加安全的基于DTO的LINQ表达式进行封装,最后传递给后台的也就是一个LINQ对象(非传统方式的实体LINQ,那样在分布式处理中会出错

    4.2K50
    领券