当前位置: 首页 > news >正文

关于做完 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,文心一言,谷歌...........最好是走投无路的时候,再问问其他懂得领导 或者同事,都很忙),还有多看看别人的代码,借鉴借鉴 ,多沟通,在一个就是自己多想一想为什么这样写,不这样写行不行。。。。加油!你一定行 

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

相关文章:

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

1. .Any()方法使用 可以与其他LINQ方法结合使用&#xff0c;以构建更复杂的查询。例如&#xff0c;你可以首先过滤集合&#xff0c;然后检查过滤后的集合是否包含任何元素&#xff1a; List<string> fruits new List<string> { "Apple", "Banana&q…...

CSS响应式布局实现1920屏幕1rem等于100px

代码解析与实现 设置根元素的 font-size 为 5.208333vw 假设你想让根元素的 font-size 基于视口宽度来动态调整。我们可以通过设置 font-size 为 5.208333vw 来让 1rem 相当于视口宽度的 5.208333%。 计算 5.208333vw: 当屏幕宽度为 1920px 时&#xff0c;5.208333vw 等于 5…...

根据当前浏览器版本,下载或更新驱动文件为对应的版本

以前通过ChromeDriverManager().install()的方式自动下载驱动的方式&#xff0c;现在行不通了&#xff0c;访问不通下载网址&#xff0c;会报错&#xff1a;requests.exceptions.ConnectionError: Could not reach host. Are you offline? 所以想着换一个下载地址和方式&…...

【轻量化】YOLOv10 更换骨干网络之 MobileNetv4 | 模块化加法!非 timm 包!

之前咱们在这个文章中讲了timm包的加法,不少同学反馈要模块化的加法,那么这篇就讲解下模块化的加法,值得注意的是,这样改加载不了mobilebnetv4官方开源的权重了~ 论文地址:https://arxiv.org/pdf/2404.10518 代码地址:https://github.com/tensorflow/models/blob/master…...

人体存在感应器设置时间开启感应人存在开灯,失效

环境&#xff1a; 领普人体存在感应器 问题描述&#xff1a; 人体存在感应器设置时间开启感应人存在开灯,失效&#xff0c;设置下午5点&#xff0c;如果有人在5点前一直在这个区域&#xff0c;这个时候到了5点&#xff0c;就触发不了感应自动打开灯光。 解决方案&#xff1a…...

2024年09月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控…...

Vuex vs Pinia:新一代Vue状态管理方案对比

引言 随着Vue生态系统的不断发展&#xff0c;状态管理已经成为现代Vue应用程序中不可或缺的一部分。Vuex作为Vue官方的状态管理方案&#xff0c;一直是开发者的首选。然而&#xff0c;随着Pinia的出现&#xff0c;为Vue开发者带来了新的选择。本文将深入对比这两个状态管理方案…...

es查询报错:too_many_buckets_exception

故障排除 es查询报错&#xff1a;too_many_buckets_exception {"error":{"root_cause":[],"type":"search_phase_execution_exception","reason":"","phase":"fetch","grouped":…...

outlook邮箱关闭垃圾邮件——PowerAutomate自动化任务

微软邮箱反垃圾已经很强大了非常敏感&#xff0c;自家的域名的邮件都能给扔到垃圾邮箱里&#xff0c;但还是在本地增加了一层垃圾邮箱功能&#xff0c;然后垃圾邮箱并没有提示&#xff0c;导致错过很多通知&#xff0c;本身并没有提供关闭的功能&#xff0c;但微软有个Microsof…...

机器学习(七)——集成学习(个体与集成、Boosting、Bagging、随机森林RF、结合策略、多样性增强、多样性度量、Python源码)

目录 关于1 个体与集成2 Boosting3 Bagging与随机森林4 结合策略5 多样性X 案例代码X.1 分类任务-Adaboost-SVMX.1.1 源码X.1.2 数据集&#xff08;鸢尾花数据集&#xff09;X.1.3 模型效果 X.2 分类任务-随机森林RFX.2.1 源码X.2.2 数据集&#xff08;鸢尾花数据集&#xff09…...

vue跳转传参

path 跳转只能使用 query 传参 ,name 跳转都可以 params &#xff1a;获取来自动态路由的参数 query &#xff1a;获取来自 search 部分的参数...

初识Linux · 共享内存

目录 理解共享内存 Shared memmory code 理解共享内存 前文介绍的管道方式的通信&#xff0c;本文介绍的是进程通信的另外一种方式&#xff0c;即共享内存。但是这种通信方式的特点是只能本地通信&#xff0c;并且不像管道那样有保护机制&#xff0c;这里是没有的。 我们通…...

Illumina测序什么时候会测序到接头序列?

Storage-D: 一个支持实用及个性化 DNA 数据存储的用户友好型平台 iMeta主页&#xff1a;http://www.imeta.science 方法论文 ● 期刊&#xff1a;iMeta&#xff08;IF 23.7&#xff09; ● 原文链接DOI: https://doi.org/10.1002/imt2.168 ● 2024年1月21日&#xff0c;中国…...

Element表格show-overflow-tooltip属性

表格默认情况下若内容过多会折行显示&#xff0c;若需要单行显示可以使用show-overflow-tooltip属性&#xff0c;它接受一个Boolean&#xff0c;为true时多余的内容会在 hover 时以 tooltip 的形式显示出来。 <el-table v-loading"loading" :data"list"…...

蓝桥杯竞赛单片机组备赛【经验帖】

本人获奖情况说明 笔者本人曾参加过两次蓝桥杯电子赛&#xff0c;在第十二届蓝桥杯大赛单片机设计与开发组获得省级一等奖和国家级二等奖&#xff0c;在第十五届嵌入式设计开发组获得省级二等奖。如果跟着本帖的流程备赛&#xff0c;只要认真勤奋&#xff0c;拿个省二绝对没问…...

解密复杂系统:理论、模型与案例(3)

第五章&#xff1a;复杂系统的应用案例 复杂系统理论在多个领域中展现出其独特的分析能力和广泛的应用前景。本章将详细探讨复杂系统在生态系统、经济与金融系统、社会网络以及生物系统中的具体应用&#xff0c;通过丰富的案例分析&#xff0c;揭示复杂系统理论在实际问题解决…...

<项目代码>YOLOv8 番茄识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

docker安装到D盘

双击安装docker默认是安装在c盘&#xff0c;并且安装时我们没法选择位置&#xff0c;如果我们要安装在其他盘可以通过命令行安装 1、下载docker https://docs.docker.com/desktop/setup/install/windows-install/ Docker Desktop 可以使用 WSL 和 Hyper-V任意一种架构&#xf…...

【Java语言】String类

在C语言中字符串用字符可以表示&#xff0c;可在Java中有单独的类来表示字符串&#xff08;就是String&#xff09;&#xff0c;现在我来介绍介绍String类。 字符串构造 一般字符串都是直接赋值构造的&#xff0c;像这样&#xff1a; 还可以这样构造&#xff1a; 图更能直观的…...

【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;path/filepath 包提供了一组用于处理文件路径的函数&am…...

Diff 算法的误判

起源&#xff1a; for循环的:key的值使用index绑定&#xff0c;当循环列表条目变化更新&#xff0c;导致虚拟 DOM Diff 算法认为原有项被替换&#xff0c;而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…...

odoo 17 后端路由接口认证自定义

odoo 17 后端路由接口认证自定义 在接口中, 我们都知道有3中常用的认证方式 user 用户级认证public 访问时赋予公共用户none 不做任何用户级处理 一般不做数据库重要数据校验, 仅做访问处理 以上是源码提供的三种方式 接下来我们自定义一个认证方式 首先找到的这认证是在…...

租赁回收系统小程序

1.需求分析&#xff1a;首先&#xff0c;需要明确系统的功能和特点。这包括确定租赁回收的物品类型、用户群体、业务流程等。通过需求分析&#xff0c;可以确保系统能够满足市场和用户的需求。 2.系统设计&#xff1a;在需求分析的基础上&#xff0c;进行系统的整体设计。这包…...

SQL 注入详解:原理、危害与防范措施

文章目录 一、什么是SQL注入&#xff1f;二、SQL注入的工作原理三、SQL注入的危害1. 数据泄露2. 数据篡改3. 拒绝服务4. 权限提升 四、SQL注入的类型1. 基于错误的信息泄露2. 联合查询注入3. 盲注(1). 基于布尔响应的盲注(2). 基于时间延迟的盲注 4. 基于带外的注入 五、防范SQ…...

如何用Java爬虫“采集”商品订单详情的编程旅程

在这个数据驱动的世界里&#xff0c;如果你不是数据&#xff0c;那么你一定是在收集数据。就像蜜蜂采集花粉一样&#xff0c;我们程序员也需要采集数据&#xff0c;以便分析、优化和做出明智的决策。今天&#xff0c;我们就来聊聊如何使用Java编写一个爬虫&#xff0c;这个爬虫…...

《FreeRTOS任务基础知识篇》

FreeRTOS任务基础知识 1. 什么是多任务系统&#xff1f;2. FreeRTOS任务3. 任务状态3.1 运行态3.2 就绪态3.3 阻塞态3.4 挂起态 4. 任务优先级5. 任务的实现6. 任务控制块7. 任务堆栈 FreeRTOS的核心是任务管理&#xff0c;以下介绍FreeRTOS任务的一些基础知识。 1. 什么是多任…...

前端面试笔试(二)

目录 一、数据结构算法等综合篇 1.HTTP/2、ETag有关 二、代码输出篇 1.new URL&#xff0c;url中的hostname&#xff0c;pathname&#xff0c;href 扩展说一下url的组成部分和属性 URL的组成部分 urlInfo 对象的属性 2.一个递归的输出例子 3.数组去重的不普通方法1 4.数…...

基于Python 和 pyecharts 制作招聘数据可视化分析大屏

在本教程中&#xff0c;我们将展示如何使用 Python 和 pyecharts 库&#xff0c;通过对招聘数据的分析&#xff0c;制作一个交互式的招聘数据分析大屏。此大屏将通过不同类型的图表&#xff08;如柱状图、饼图、词云图等&#xff09;展示招聘行业、职位要求、薪资分布等信息。 …...

探索光耦:晶体管光耦——智能家居的隐形桥梁,让未来生活更智能

在这个日新月异的科技时代&#xff0c;智能家居正以前所未有的速度融入我们的日常生活&#xff0c;从智能灯光到温控系统&#xff0c;从安防监控到语音助手&#xff0c;每一处细节都透露着科技的温度与智慧。而在这场智能化浪潮中&#xff0c;一个看似不起眼却至关重要的组件—…...

三、模板与配置(上)

三、模板与配置 1、WXML模板语法-数据、属性绑定 讲解&#xff1a; 1-1、数据绑定的基本原则 在data中定义数据 Page({data: {//这里是你需要定义的数据} })在WXML中使用数据 {{ 你定义的数据 }}1-2、在data中定义页面的数据 在页面对应的.js文件中&#xff0c;把数据定…...