关于做完 C# 项目的问题总结

1. .Any()方法使用
可以与其他LINQ方法结合使用,以构建更复杂的查询。例如,你可以首先过滤集合,然后检查过滤后的集合是否包含任何元素:
List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Date" };  
  
bool hasLongFruitName = fruits.Where(f => f.Length > 5).Any();  
  
Console.WriteLine(hasLongFruitName); // 输出: True
重点是.where之后Any
  .Where(p => p.NAME.Any(x => x.BBB.Any(c => c.DDD== EEE)))

  • .Any()方法在执行时会遍历集合中的元素,直到找到满足条件的元素或遍历完整个集合。因此,对于大型集合,如果只需要检查是否存在满足条件的元素而不关心具体是哪些元素,.Any()方法通常比.Count().ToList()等方法更高效。
  • .Any()方法是扩展方法,定义在System.Linq.Enumerable类中。因此,你需要确保你的项目引用了System.Linq命名空间。

希望这些示例能帮助你理解如何在C#中使用.Any()方法!

 2. .Distinct()去重

 .Distinct().ToListAsync(cancellationToken);
直接用就好了

3.  Include      ThenInclude    使用  

在Entity Framework (EF) 中,Include 和 ThenInclude 方法用于执行急切加载(Eager Loading),这意味着在查询数据库时,会立即加载相关联的实体。这对于确保在访问导航属性时不会触发额外的数据库查询(即N+1问题)非常有用。

Include 方法用于指定要加载的直接关联实体,而 ThenInclude 方法则用于在已经通过 Include 方法加载的关联实体上进一步指定要加载的更深层次的关联实体。

请注意,Include 和 ThenInclude 方法是链式的,这意味着你可以根据需要连续调用它们来加载更深层次的关联实体。然而,每个 Include 或 ThenInclude 调用都会增加查询的复杂性,并可能影响性能。因此,只应加载确实需要的关联数据。

此外,如果你使用的是 EF Core 5.0 或更高版本,你还可以使用 ThenInclude 的重载形式来加载多个关联路径。但在大多数情况下,简单的链式调用就足够了。

4. .OrderBy(e => e.name) .ThenBy(e => e.name)的使用

在LINQ中,.OrderBy() 和 .ThenBy() 方法通常用于对集合进行排序。.OrderBy() 是主排序,而 .ThenBy() 是在 .OrderBy() 指定的排序基础上进行的次要排序(也称为“接着排序”或“二级排序”)

假设你有一个 Person 类,它有两个属性:FirstName 和 LastName。你想要首先根据 LastName 对人进行排序,然后在 LastName 相同的情况下根据 FirstName 进行排序。

5.  EF.Functions.Like() 模糊查询

在Entity Framework (EF) 中,EF.Functions.Like 方法用于在查询中执行类似 SQL 的 LIKE 操作。这对于在数据库中执行模式匹配查询非常有用,特别是当你想要根据某个字段的部分内容来筛选记录时。

EF.Functions.Like 方法接受两个参数:要检查的字段和要匹配的模式。模式可以包含通配符,如 %(表示任意数量的字符)和 _(表示单个字符)。

6.  关联之后判断非空: .Include(e => e.user) q.class!.name,
!就是判断  否则报错 

user.unitcode is null ? null : (UnitName)user.unitcode .Name

7. SingleOrDefaultAsync()

SingleOrDefaultAsync 是 Entity Framework (EF) 和其他类似 ORM (对象关系映射器) 框架中用于异步查询的方法。它用于从数据库中检索满足特定条件的单个实体,或者如果找不到满足条件的实体,则返回默认值(对于引用类型通常是 null)。

8.AsSplitQuery()

EF默认是按照单个查询的形式执行(即所有Include对象在一个SQL中取出),如果同一级别有多个集合导航时会产生严重的性能问题(笛卡尔爆炸现象)。可以使用AsSplitQuery()方法拆分查询解决问题

9. FirstOrDefault(),First()方法
数组有1件以上的数据时使用First()方法
数组有0件可能时使用FirstOrDefault()方法

10.  .OrderByDescending(x => x.aaa) .ThenByDescending(x => x.vvv)降序排列

  • .ThenByDescending(x => x.vvv):这个方法在 .OrderByDescending 之后使用,它会根据指定的属性 vvv 对已经根据 aaa 降序排序的元素进行进一步的降序排序。这意味着,对于具有相同 aaa 值的元素,它们将根据 vvv 的值进行降序排列。

11. var Result =ResultList.Find(x => user.getCode().Contains(x.aaa));

Find 方法在内部使用线性搜索,这意味着它会遍历整个集合来查找匹配的元素。如果 ResultList 很大,这可能会导致性能问题。如果可能的话,考虑使用更高效的数据结构或查询方法,如 LINQ 的 FirstOrDefault 方法与 Where 子句结合使用。

返回值:如果 Find 方法找不到匹配的元素,它将返回 null。因此,在使用 Result 变量之前,您应该检查它是否为 null,以避免空引用异常。

Lambda 表达式x => user.getCode().Contains(x.aaa) 是一个 Lambda 表达式,它定义了一个匿名函数,该函数接受一个参数 x 并返回一个布尔值,表示 user.getCode() 返回的字符串是否包含 x.aaa

方法调用user.getCode() 似乎在每次迭代时都会被调用。如果这个方法有副作用或计算成本很高,那么它可能会成为性能瓶颈。如果可能的话,考虑先调用 user.getCode() 并将结果存储在一个变量中,然后在 Lambda 表达式中使用该变量。

12..SumAsync

.SumAsync 是 Entity Framework (EF) 或其他支持异步操作的 LINQ 提供程序中的一个扩展方法,用于异步计算集合中数值类型属性的总和。与同步的 .Sum 方法相比,.SumAsync 不会在调用线程上阻塞,而是允许它继续执行其他任务,直到总和计算完成。

使用 .SumAsync 时,你通常需要在一个异步方法内部,并且该方法应该用 async 关键字标记。此外,你需要使用 await 关键字来等待 .SumAsync 方法的完成,并获取计算出的总和。

13.  Select 一个是查数据库用的  另一个是查到之后GetuserResult自己需要的结果

 var datas = await query
     .OrderByDescending(c => c.bbb)
     .Select(q => new
     {
         q.aaa,
        ),
     }).ToListAsync(cancellationToken);

 var elements = datas.Select(x => new GetuserResult( x.aaa, )).ToList();

我也是小白一名不过在做作业时,一定要好好查查(百度,csdn,文心一言,谷歌...........最好是走投无路的时候,再问问其他懂得领导 或者同事,都很忙),还有多看看别人的代码,借鉴借鉴 ,多沟通,在一个就是自己多想一想为什么这样写,不这样写行不行。。。。加油!你一定行 

如果对你有帮助记得点赞收藏哦 谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从dos上传shell脚本文件到Linux、麒麟执行报错“/bin/bash^M:解释器错误:没有那个文件或目录”

[rootkylin tmp]#./online_update_wars-1.3.0.sh ba51:./online_update_wars-1.3.0.sh:/bin/bash^M:解释器错误:没有那个文件或目录 使用scp命令上传文件到麒麟系统&#xff0c;执行shell脚本时报错 “/bin/bash^M:解释器错误:没有那个文件或目录” 解决方法&#xff1a; 执行…

几何合理的分片段感知的3D分子生成 FragGen - 评测

FragGen 来源于 2024 年 3 月 25 日 预印本的文章&#xff0c;文章题目是 Deep Geometry Handling and Fragment-wise Molecular 3D Graph Generation&#xff0c; 作者是 Odin Zhang&#xff0c;侯廷军&#xff0c;浙江大学药学院。FragGen 是一个基于分子片段的 3D 分子生成模…

【不写for循环】玩玩行列

利用numpy的并行操作可以比纯用Python的list快很多&#xff0c;不仅如此&#xff0c;代码往往精简得多。 So, 这篇来讲讲进阶的广播和花哨索引操作&#xff0c;少写几个for循环&#xff08;&#xff09;。 目录 一个二维的例题 一个三维的例题 解法一 解法二 更难的三维例题…

Spring纯注解开发

在我的另一篇文章中&#xff08;初识Spring-CSDN博客&#xff09;&#xff0c;讲述了Bean&#xff0c;以及通过xml方式定义Bean。接下来将讲解通过注解的方法管理Bean。 我们在创建具体的类的时候&#xff0c;可以直接在类的上面标明“注解”&#xff0c;以此来声明类。 1. 常…

华为欧拉系统使用U盘制作引导安装华为欧拉操作系统

今天记录一下通过U盘来安装华为欧拉操作系统 华为欧拉操作系统是国产的一个类似于Centos的Linus系统 具体实现操作步骤&#xff1a; 先在官网下载欧拉系统镜像点击跳转到下载 准备好一个大于16g的U盘 &#xff0c;用于制作U盘启动 下载一个引导程序制作工具&#xff0c;我使用…

PyCharm2024.2.4安装

一、官网下载 1.从下面的链接点进去 PyCharm: The Python IDE for data science and web development by JetBrains 2.进入官网后&#xff0c;下载pycharm安装包 3.点击下载能适配你系统的安装包 4.安装包下载完成 二、安装 1.下载完成后&#xff0c;打开点击右键&#xff…

定时器的小应用

第一个项目 第一步&#xff0c;RCC开启时钟&#xff0c;这个基本上每个代码都是第一步&#xff0c;不用多想&#xff0c;在这里打开时钟后&#xff0c;定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…

基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)

在全球公共卫生事件频发的背景下&#xff0c;防护口罩佩戴检测成为保障公众健康和控制病毒传播的重要手段之一。特别是在人员密集的公共场所&#xff0c;例如医院、学校、公共交通工具等地&#xff0c;口罩的正确佩戴对降低病毒传播风险、保护易感人群、遏制疫情扩散有着至关重…

STM32保护内部FLASH

在实际发布的产品中&#xff0c;在STM32芯片的内部FLASH存储了控制程序&#xff0c;如果不作任何保护措施的话&#xff0c;可以使用下载器直接把内部FLASH的内容读取回来&#xff0c;得到bin或hex文件格式的代码拷贝&#xff0c;别有用心的厂商即可利用该代码文件山寨产品。为此…

前端 - 使用uniapp+vue搭建前端项目(app端)

文章目录 前提概要项目搭建1、打开HBuilder工具&#xff0c;选择文件->新建->项目2、下载依赖&#xff0c;需要先手动创建package.json文件&#xff0c;在自定义文件的最外层3、创建文件夹4、创建忽略文件 .gitignore5、创建vue.config.js文件 &#xff0c;解决跨域问题&…

计算机网络HTTP——针对实习面试

目录 计算机网络HTTP什么是HTTP&#xff1f;HTTP和HTTPS有什么区别&#xff1f;分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别&#xff1f;HTTP请求方式有哪些&#xff1f;请解释GET和POST的区别&#xff1f;HT…

飞创直线电机模组 VS 传统丝杆模组:谁是自动化传动领域的王者?

在现代自动化技术领域&#xff0c;直线电机模组与传统丝杆模组作为两种常见的传动方式&#xff0c;各自有独特的特点和优势。然而&#xff0c;随着科学的不断进步和应用需求的日益提高&#xff0c;两者在精度、速度、寿命及可拓展性方面的差异愈发显著。本文将重点对比飞创直线…

第二十一周学习周报

目录 摘要Abstract1. LSTM原理2. LSTM反向传播的数学推导3. LSTM模型训练实战总结 摘要 本周的学习内容是对LSTM相关内容的复习&#xff0c;LSTM被设计用来解决标准RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制来控制信息的流动&#xff0c;从而…

《鸿蒙生态:开发者的机遇与挑战》

一、引言 在当今科技飞速发展的时代&#xff0c;操作系统作为连接硬件与软件的核心枢纽&#xff0c;其重要性不言而喻。鸿蒙系统的出现&#xff0c;为开发者带来了新的机遇与挑战。本文将从开发者的角度出发&#xff0c;阐述对鸿蒙生态的认知和了解&#xff0c;分析鸿蒙生态的…

Elasticsearch基本概念及使用

Elasticsearch 是一个开源的、分布式的全文搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它提供了快速的搜索能力&#xff0c;支持大规模的数据分析&#xff0c;广泛应用于日志分析、全文搜索、监控系统和商业智能等领域。ES操作指令是基于restAPI构建&#xff0c;也就…

常用命令之LinuxOracleHivePython

1. 用户改密 passwd app_adm chage -l app_adm passwd -x 90 app_adm -> 执行操作后&#xff0c;app_adm用户的密码时间改为90天有效期--查看该euser用户过期信息使用chage命令 --chage的参数包括 ---m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 ---M 密码…

华为HCIP——MSTP/RSTP与STP的兼容性

一、MSTP/RSTP与STP的兼容性的原理&#xff1a; 1.BPDU版本号识别&#xff1a;运行MSTP/RSTP协议的交换机会根据收到的BPDU&#xff08;Bridge Protocol Data Unit&#xff0c;桥协议数据单元&#xff09;版本号信息自动判断与之相连的交换机的运行模式。如果收到的是STP BPDU…

Visual Studio 2022 安装

下载链接 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCommunity&channelRelease&versionVS2022&sourceVSLandingPage&cid2030&passivefalse 安装 以c为例&#xff0c;列出需要勾选的项目&#xff0c;有3个&a…

文件 fd

&#x1f3f7;️ 预备工作 ❓ 当我们在系统中创建一个空文件时&#xff0c;这个文件要不要占据磁盘的空间&#xff08;注意是空文件哟&#xff09; 答案&#xff1a;当然是要占据磁盘的空间的&#xff0c;文件不仅只包括内容&#xff0c;还有它的属性呀&#xff0c;就是创建时…

树的直径计算:算法详解与实现

树的直径计算:算法详解与实现 1. 引言2. 算法概述3. 伪代码实现4. C语言实现5. 算法分析6. 结论在图论中,树的直径是一个关键概念,它表示树中任意两点间最长路径的长度。对于给定的树T=(V,E),其中V是顶点集,E是边集,树的直径定义为所有顶点对(u,v)之间最短路径的最大值。…