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

在通用列表中搜索项目时,我应该使用LINQ还是包含?

在通用列表中搜索项目时,使用LINQ(Language Integrated Query,即语言集成查询)是更合适的选择。LINQ 是一个强大的查询技术,允许开发人员在 C#、F#、Visual Basic 和其他支持 LINQ 的编程语言中编写查询。使用 LINQ 可以更简洁、更直观地编写查询,并利用编译时语法检查来提高代码质量和性能。

相比之下,使用“包含”(Contains)关键字进行搜索可能会在性能上略逊于 LINQ。此外,“包含”关键字在表达某些查询需求时会显得冗长,不如 LINQ 那么简洁。

总之,在通用列表中搜索项目时,使用 LINQ 比使用“包含”关键字更具优势,可以提供更好的性能和可读性。

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

相关·内容

一步一步创建ASP.NET MVC5程序(十一)

HTML代码,本文我们将要涉及到的内容为: 通用分页的封装 文章分页的实现 通用分页的封装 之前两期中,我们的文章列表页面是没有分页功能的,而是使用如下方法: public IEnumerable<Post...那么,本文将为大家封装一个通用的分页信息类以及分页泛型方法,并最终实现首页文章列表的数据分页功能。分页效果如下图: ?...,现在我们需要使用以上的分页封装,UI层来实现文章列表的分页功能。...安装的方式为:nuget,所以与以前几期的nuget包安装类似,打开nuget包管理工具,搜索关键词PagedList,查询出来的包,选择PagedList.Mvc和PagedList两个分页组件包并安装...完成以上步骤之后,我们重新编译和生成项目 TsBlog.Frontend 。最后,浏览器打开地址: http://localhost:54739/ ,检查一下,数据分页功能是否起作用了呢?

1.5K60

.NET深入解析LINQ框架(二:LINQ优雅的前奏)

很多时候我们设计一个系统功能或者应用框架,完全可以借助链式设计模式来优雅我们的开发方式,使编码起来很顺利很方便。...//筛选出年龄20岁的学生列表 13 SelectByAddress("江苏南京");//筛选出地址为“江苏南京”的学生列表 看起来是不是很优雅,反正觉得很优雅很舒服。...使用IEnumerable和IQueryable之间的区别是什么?如何很好的理解这两者LINQ的整个框架的关系。...Enumerable静态类的所有静态方法都是对应着操作IEnumerable集合类型的LINQ查询表达式的,当每次查询都是直接的调用Enumerable里面的静态方法。...IQueryable接口,当我们使用LINQ来查询IQueryable接口查询表达式会被直接编译成对应的Queryable静态类的对应的静态扩展方法。

2K30

【深入浅出C#】章节 5: 高级面向对象编程:泛型编程和集合类型

一、泛型编程的概念和作用 1.1 泛型的定义和特点 泛型是一种在编程语言中引入的特性,它允许定义类、接口、方法等使用类型参数,从而实现代码的通用性和灵活性。...泛型的主要特点包括: 类型参数化:泛型允许定义使用类型参数,这样可以将具体的类型信息延迟到使用时确定,从而使代码更具通用性。...它们提供了方便的方法来添加、删除、访问和搜索集合的元素。C#,常见的集合类型包括数组、列表、字典、集合和队列等。...移除元素:使用Remove方法移除列表的元素。 查找元素:使用Contains方法判断列表是否包含某个元素。...移除元素:使用Remove方法移除集合的元素。 查找元素:使用Contains方法判断集合是否包含某个元素。

33321

原 GetHashCode重写指南(译文)

把事情简单化了, 这样我们就能专注于散列部分。) 这里的包含方法查询速度是线性增长的;如果列表中有1万项, 则必须查看所有1万项, 以确定该对象不在列表。这并非优秀的实现方式。...推断很简单,假定两个对象是相等但是hash值不同,如果第一个对象放在桶里可能被放进12号桶,如果接着set查询另一个不同hash的相等对象,他可能回去搜索67号桶,那么就会找不到。...如果一个hash表的对象的hash值改变了,很明显包含方法将不能正常工作,你把这个对象放到5号桶,然后hash值突变,使用contain方法判断对象是否存在,它就到74号桶里查找,自然是找不到的...对象可能会超出你预料的放进hash表,许多linq操作内部都是使用的hash表,linq操作不要做危险的可能会导致hash值改变的操作。...结果是, 所有10万由五个字符, 并且只包含数字的字符串, 总是被哈希到600个桶的其中5个。msn.com 的人使用的表试图快速查找数以万计的美国邮政编码, 所有这些代码都是五位数的字符串。

1.1K60

使用 Benchmark.NET 测试代码性能

并非每个项目都需要进行基准测试,但是如果您正在开发的是NuGet程序包或通用dll,则很有意义。...,我们直接修改program.cs, 每个测试方法都需要 [Benchmark] 特性,创建了三个示例,分别使用+运算符,Linq的Concat函数和使用StringBuilder拼接。...最后,控制台应用程序的Main入口点中,添加 BenchmarkRunning Run命令: 然后我们使用下边的命令运行测试,或者直接使用VS启动项目,需要切换到Release模式下 dotnet run...由此可见,StringBuilder要比+运算符效率更高,Linq Concat函数也相对高效,但还是没有StringBuilder快。 总结 拼接字符串使用StringBuilder!...本篇文章只是简单作的做了介绍,Benchmark.NET是测试性能的非常强大的工具,如果需要构建Nuget包,或者开发通用类库,这将是一种很好的测试方法。

37020

用ASP.NET Core 2.1 建立规范的 REST API -- 翻页排序过滤等

现在就是要对中国的城市进行整体性的更新操作,里面会包含:添加、删除、更新操作。看代码: ? 集合更新,一共分了三步进行的操作: 1. 把数据库存在的但是传进来的数据里没有的城市删掉 2....如果你是用的是关系型数据库的话,应该可以Log的输出媒介上看到打印出的SQL语句(但我这里使用的是内存数据库,所以看不到),如果使用关系型数据库还是看不到SQL语句的话,请配置一下: ?...项目里,而整个项目的核心(合约)个人认为应该是和具体的ORM无关的,但是这里依赖于EntityFrameworkCore了(ToListAsync())。...幸好有一个微软的库支持这种操作,它叫做System.Linq.Dynamic.Core(其作者是红衣教主啊): ? 把它安装在了Infrastructure项目里供Repository使用。...我们要做的就是给定一个Fields和一个类型,需要判断Fields里面包含的字段属性在这个类型里面都存在,所以还是做一个Service比较好,可以注入使用。 看代码: ?

1.3K10

ORM查询语言(OQL)简介--概念篇

几乎Linq同一期,PDF.NET也发明了自己的ORM查询语言,称为OQL。下面提到的OQL,都是指的PDF的OQL。...由于SQL的具体实现又有很多不同的版本,所以很多时候SqlServer用的SQL语句Oracle 上不一定能够使用,只有那些完全标准的SQL语句才是通用的,因此,OQL的设计,也必须是这样标准的SQL...现在,觉得LINQ也具有了这样的能力,而我框架的OQL,也有这样的能力,所以我大胆的称呼它是一个“ORM Query Laguage”,就像SQL是提供给RDBMS的查询引擎使用一样,OQL是提供给...shawn(630235793) 2012-10-6 1:39:15 数据访问框架设计的初始设想,首先应该是满足调用层的使用要求,换句话说请求是事务性的,还是非事务性的。...pdf.net 主推的应该是:linq 般好用,但是性能卓越 回复: LINQ是.NET独有的特性,“语言集成查询”,它是集成.NET语言中的,这是它的先天优势。

2.4K100

2022年了有哪些值得推荐的.NET ORM框架?

前言: 最近有很多同学问我.NET方面有哪些好用的ORM框架,觉得这方面的介绍网上应该会介绍的比较全面文章,于是想搜一篇全面的介绍文章发给他们结果发现网上说来说去基本上就是那几个,于是就有了这篇文章...EntityFramework.Exceptions - 当您的SQL查询违反SqlServer,MySql或PostgreSQL的数据库约束,请对EntityFrameworkCore使用类型化的异常处理...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...它在整个转换和执行过程重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员开发过程中进行上下文切换简化体验。 开源软件——它是一个开源软件,并且永远是免费的。...主要特点: 非常容易与现有项目集成并在所有 .NET 平台上运行。 SQLite 上的瘦包装器,快速高效。(这个库不应该是您查询的性能瓶颈。)

5.8K11

C#3.0新增功能10 表达式树 03 支持表达式树的框架类型

存在可与表达式树配合使用的 .NET Core framework 的类的大型列表。 可以 System.Linq.Expressions 查看完整列表。...让我们来了解一下 framework 类的设计方式,而不是逐一查看完整列表语言设计,表达式是可计算并返回值的代码主体。 表达式可能非常简单:常数表达式 1 返回常数值 1。...System.Linq.Expression 使用表达式树的其中一个难点在于许多不同类型的表达式程序的许多位置均有效。 请思考一个赋值表达式。...可以搜索特定的节点类型,然后使用这种表达式的特定属性。 例如,此代码将打印变量访问表达式的变量的名称。...创建表达式树 System.Linq.Expression 类还包含许多创建表达式的静态方法。 这些方法使用为子节点提供的参数创建表达式节点。 通过这种方式,可以从其叶节点构建一个表达式。

61020

C#规范整理·集合和Linq

前言#   C#的集合表现为数组和若干集合类。不管是数组还是集合类,它们都有各自的优缺点。如何使用好集合是我们开发过程必须掌握的技巧。...如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建。而数组本身,尤其是一维数组,遇到要求高效率的算法,则会专门被优化以提升其效率。...注意  由于数组本身在内存上的特点,因此使用数组的过程应该注意大对象的问题。所谓“大对象”,是指那些占用内存超过85 000字节的对象,它们被分配在大对象堆里。...当我们觉得集合插入和删除数据很慢,就可以考虑使用链表。...查询避免不必要的迭代 # 比如常使用First()方法,First方法实际完成的工作是:搜索到满足条件的第一个元素,就从集合返回。

17030

LINQ to SQL集成到应用程序需考虑的一些问题

1、LINQ to SQL集成到应用程序需考虑的一个问题, 到底应该返回IQueryable还是IQueryable?...或许这个列表应该继续扩展为T, List, 对于Business Layer来说, 到底应该选择哪一种?...2、需要一个分页功能; 到这一步的时候又有几个选择, 利用LINQ to SQL可以执行自定义存储过程的功能, 完全自己写, LINQ to SQL本身已经有API提供了分页功能了,不过只有排序或包含标识列的查询中支持...Skip方法, 有什么理由放弃, 除非性能真的到了非常Critical的时候, 看看下面的分页API, 多么简单: return q.Skip((currentPage - 1) *...首先List的话, 我们不知道到底哪个字段要排序, 如果使用字符串作为参数的话, 例如放一个string sortBy作为方法的参数, 那么方法体内就需要做if…else或者switch的判断, 而且还要考虑倒序还是正序的排序要求

1.2K60

微软动态语言支持上超越了Java?

举例来说:LINQ就是一个极其强大的新特性(补充一下,它基于Haskell语言的monads);泛型(Generics)C#也比Java得到更早、更良好的支持(两者的泛型风格都受到Haskell...举例来说:如果Python有一个PyString对象并且它调用了一个需要Object的C#方法,是应该传递PyString对象呢,还是应该将它解包成一个String对象呢?...Ruby 字符串传出到Java也被假定为UTF-8,Java端调用的返回结果应该符合该假定。...这个想法来源于Gilad Bracha,他创建了这个JSR之后很快离开了Sun公司,现在他并不看好这个项目会在短期内有任何解决方案出台: JSR 292是为了解决这些问题所发起的一项努力。...希望缺席的情况下它仍能继续下去,但这个项目还需要若干年才能出成果(如果可能的话)。坦白地说,向JVM为这些特性添加支持,然后使Strongtalk变得更稳定是更为困难的一件事情。

807100

ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

应该包含在bind属性属性,您想要更改。您可以阅读有关在overposting security note。我们将在本教程中使用的简单模型,模型绑定所有数据。...为了强制您的电脑使用美国英语,你可以项目根目录Web.config文件里面添加的全球化设置。 下面的代码演示设置为美国英语的全球化文化设置。...当定义LINQ查询或修改查询条件,如调用Where 或OrderBy方法,不会执行 LINQ 查询。相反,查询执行会被延迟,这意味着表达式的计算延迟,直到取得实际的值或调用ToList方法。...(使用 Distinct修饰符,不会添加重复的流派 -- 例如,我们的示例添加了两次喜剧)。 该代码然后ViewBag对象存储了流派的数据列表。...尝试搜索流派,电影名称,并同时选择这两个条件。 ? 本节,您创建了一个搜索的方法和视图,使用它,用户可以通过电影标题和流派来搜索

6.7K110

应该项目使用EF Core吗?

简单介绍了EF Core以及它的工作方式之后,接下来的问题是你是否应该项目中开始使用EF Core....EF Core是开源的,你可以直接查看源码和问题与缺点列表 — 参见 https://github.com/aspnet/EntityFramework/issues 快速开发 典型的数据驱动应用程序...使用过ADP.NET,LINQ to SQL, EF 4到6以及现在的EF Core, 相信这已经是一个很棒的O/RM了 但是在编写本书, EF Core(2.0)仍然有一些功能尚未添加, 这就是图...发现1.0.0版本中使用DateTime的year存在错误, 还有1.1.0修复的其他LINQ翻译的问题 当你在读到这篇文章, EF Core已经修复了很多问题,但是仍在变化....这是简便的代价: EF Core内部所有的”魔法”都不如手工编写的SQL好,但是你可能会惊讶它的魔法还是有点料的 幸运的是我们对此做一些措施.项目中,发现只有5%到10%的查询是需要手动调优的关键查询

97640

专业上的常用的工具和类库集

Everything:Windows上所见过的最快的文件搜索软件,速度抛开Windows系统自带搜索功能大概地球到木星的距离——只要你的文件系统格式是NTFS的。...LinkId=389866 linq.js linq.js是用于Web前端的js代码中使用类似C#的Linq语法对数据进行查询统计等处理 官方网站: https://linqjs.codeplex.com...也是目前.NET领域唯一支持Linq的Mock框架 项目网站:https://github.com/Moq/moq4 CsQuery CsQuery相当于是jQuery的C#实现,可以C#代码对HTML...深得的喜欢,小型项目使用可以成本提高开发效率。...项目网站: https://xunit.codeplex.com EmbeddedMail 网站开发过程,免不了要开发发送邮件的功能,对应的也应该写单元测试代码。

2.7K90

编写高质量代码改善C#程序的157个建议

本文主要学习记录以下内容:   建议29、区别LINQ查询的IEnumerable和IQueryable   建议30、使用LINQ取代集合的比较器和迭代器   建议31、LINQ查询避免不必要的迭代...针对LINQ to OBJECTS使用Enumerable的扩展方法对本地集合进行排序和查询等操作,查询参数接受的是Func。Func叫做谓语表达式,相当于一个委托。...针对LINQ to SQL,则使用Queryable的扩展方法,它接受的参数是Expression。Expression用于包装Func。...LINQ to SQL的查询,要尽量始终使用IQueryable。...建议31、LINQ查询避免不必要的迭代  无论是SQL查询还是LINQ查询,搜索到结果立刻返回总比搜索完所有的结果再将结果返回的效率要高。现在简单来创建一个自定义的集合类型来说明。

93350

Asp.Net Core 扩展 Linq,简化自定义

前言 -为什么需要扩展 Linq 方法 Linq .net 中使用是比较多的,而微软开发的 linq 相关函数无法满足实际项目开发的需求,我们需要自己来扩展一些方法。...c# 扩展方法 Asp.Net Core 开发或者其他的后端开发中都会有一个需求(尤其对于台或者后台管理),那就是展示数据列表;当然不是普普通通的数据列表展示,而是需要进行排序、分页、查询关键字来获取列表...甚至在有些时候需要三个同时处理来更精确的筛选数据,而对于 Asp.Net Core 来说,用的语言是 C#,是一门强类型语言,许多时候具有很大便利性,但是正因为这种原因,某些时候却不太方便使用,需要进行额外方式来进行处理...出来属性进行查询的,但是实际使用,从前端传递过来的一般都是字符串 "Name",而在后端进行查询,以目前方式是无法将属性的key写到where函数,也就无法执行查询通过"Name"来过滤数据;如果通过...但是天无绝人之路, c#拥有扩展方法、表达式目录树和反射,可以将上面的方式进行优化。

1.7K10

ASP.NET MVC5高级编程 ——(7)LINQ to SQL

; LINQ 是一组语言特性和API,使得开发人员可以使用统一的方式编写各种查询。...2.1 LINQ 第一例 没有LINQ以前,我们这样查询: ? 用LINQ, 我们可以这样查询: ? 3.1 匿名方法 .NET FrameWork C# 2.0 ,加入了匿名方法特性: ?... C# 3.0 ,继匿名方法之后加入了更为简洁的 Lambda 表达式: ? 3.2 Lambda表达式语法 最基本的 Lambda 表达式语法如下: ?...参数列表的参数类型可以是明确类型或者是推断类型(var)。 如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来。 如果参数列表包含一个推断类型参数,可以去掉括号: ? ?...完整的写法是最安全的 ,所以重点应该先讲清楚完整格式,各种简写方式都是有前提假设条件的。 如果方法体只包含一条语句,可以去掉花括号: ? 3.3 Lambda表达式的更多例子 ?

2.5K30

2022年了有哪些值得推荐的.NET ORM框架?

前言: 最近有很多同学问我.NET方面有哪些好用的ORM框架,觉得这方面的介绍网上应该会介绍的比较全面文章,于是想搜一篇全面的介绍文章发给他们结果发现网上说来说去基本上就是那几个,于是就有了这篇文章...EntityFramework.Exceptions - 当您的SQL查询违反SqlServer,MySql或PostgreSQL的数据库约束,请对EntityFrameworkCore使用类型化的异常处理...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...它在整个转换和执行过程重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员开发过程中进行上下文切换简化体验。 开源软件——它是一个开源软件,并且永远是免费的。...主要特点: 非常容易与现有项目集成并在所有 .NET 平台上运行。 SQLite 上的瘦包装器,快速高效。(这个库不应该是您查询的性能瓶颈。)

3.8K20

带你了解C#每个版本新特性

C#2有了泛型,所以我们可以使用List、Dictionary。泛型能够带来很好的编译类型检查,也不会有装箱拆箱的操作,因为类型是使用泛型的时候就已经指定了。...定义泛型类型或可以通过定义泛型约束来对泛型参数进行限制,更好的使用编译检查。...Linq提供了很多支持,如果我们在做的一个管理系统使用Linq To Sql,列表页会有按多个条件来进行数据的筛选的功能,这时就可以使用Lambda表达式树来进行封装查询条件,下面的类封装了And和...Linq是一个很大的话题,也是NET3.5比较核心的内容,有很多书籍专门来介绍Linq,下面只是做一些简单的介绍,需要注意的是Linq并非是Linq To Sql,Linq是一个大的集合,里面包含:...GetUserName()); 注:虽然这个语法糖非常简单,也很好用,但在使用时也需要多想一步,当对象为空,调用其方法返回的值也是空,这样的值对后续的操作会不会有影响,如果有,还是需要做判断,并做相关的处理

3.5K20
领券