
C#
文章平均质量分 96
吾家有猫名探花
这个作者很懒,什么都没留下…
展开
-
如何将列数据转换为行数据——SQL和EF Core(C#)两种实现方式
在数据处理的过程中,我们经常需要将表格中的列数据转化为行数据。这种操作在数据透视分析、数据清洗和报告生成中非常常见。在SQL Server中,UNPIVOT操作符为这种转换提供了一个简洁的解决方案。然而,在EF Core这样的ORM框架中,由于没有直接对应的操作符,我们需要使用LINQ进行手动处理。这篇文章将深入探讨如何在SQL Server中使用UNPIVOT以及如何在EF Core中实现同样的功能。将列数据转换为行数据是数据分析中常见的需求。原创 2024-08-15 22:03:42 · 1636 阅读 · 0 评论 -
C# 中的四舍五入方法:银行家舍入与传统舍入的对比
在软件开发中,四舍五入操作对于保证数值计算的精度和一致性至关重要,尤其是在处理财务数据、统计分析或用户界面显示时。C# 提供了多种四舍五入方法,既可以满足常规需求,也能应对特殊场景。然而,许多开发者可能并不完全了解这些方法的细微差别及其应用场景。在这篇博客中,我们将全面探讨 C# 中的四舍五入机制,分析其背后的逻辑和最佳实践,并提供高效修改现有代码的技巧。在许多应用场景中,开发者可能更希望使用传统的四舍五入规则,即无论中间值是什么,都向远离零的方向舍入。原创 2024-08-14 12:14:25 · 1075 阅读 · 0 评论 -
在 C#/.NET Core 的 Web API 中使用 Swagger 按模块和版本分组并实现排序
在开发 RESTful API 时,良好的文档是必不可少的。Swagger 是一种广泛使用的 API 文档工具,可以帮助我们生成交互式的 API 文档。然而,当项目规模增大,API 数量众多时,我们需要将 API 按照模块和版本进行分组,以便更好地管理和查找。本文将介绍如何在 .NET Core Web API 中使用 Swagger 按模块和版本分组,并使用自定义特性实现这一目标。为了实现按模块和版本分组,我们需要创建一个自定义特性。这个特性将用于标记我们的控制器,并包含模块名称、版本号和描述信息。原创 2024-08-13 16:33:53 · 1554 阅读 · 0 评论 -
C# 多线程编程:线程锁与无锁并发
多线程编程在现代软件开发中至关重要。本文将讨论 C# 中的多线程技术,重点介绍锁的概念,线程锁与无锁并发。通过学习本篇博文,我们将学会如何正确处理并发问题,提高程序的性能和稳定性。锁是一种同步机制,用于控制多个线程对共享资源的访问。当一个线程获得了锁时,其他线程将被阻塞,直到该线程释放了锁。本文深入探讨了 C# 中的多线程编程技术,重点介绍了锁的基本概念、线程锁的类型、锁的实现方式、无锁并发编程以及 C# 中的并发集合类和经典并发同步问题。理解多线程编程的基本概念。原创 2024-03-28 19:23:42 · 3027 阅读 · 2 评论 -
Vue+ElementUI+C#前后端分离:监控长耗时任务的实践
在现代的Web应用开发中,前后端的协同工作已经成为提升用户体验和应用性能的关键。特别是在处理一些耗时的后端任务时,如何优雅地管理这些任务,不仅影响着用户的等待时间,也直接关联到系统的稳定性和可靠性。本文将通过一个实际案例,介绍如何在Vue+ElementUI的前端环境和C#.NET Core的后端环境中实现一个高效的解决方案。我们将探讨如何设计一个异步的任务处理机制,允许前端发起下载任务,然后不必等待后端任务完成就能立即得到响应,同时能够实时监控任务的进度,并在任务完成后通知用户进行下载。原创 2023-12-03 15:00:38 · 1662 阅读 · 0 评论 -
C#和MySQL技巧分享:日期的模糊查询
在处理数据库查询时,特别是在涉及到模糊查询和日期字段时,我们常常面临一个挑战:如何在确保查询效率的同时,实现精确和灵活的数据检索?众所周知,直接转换数据库字段类型进行匹配往往会导致查询效率下降,甚至引发全表搜索的问题,这在处理大量数据时尤为明显。因此,找到一种既能保持数据库性能又能满足查询需求的方法显得尤为重要。这篇博客中,我们探讨了在C#和MySQL环境下进行模糊查询日期的处理策略。我们从EF Core的模糊查询开始,深入分析了在MySQL中对日期进行模糊查询的效率问题,并提出了相应的优化方法。原创 2023-12-02 10:14:02 · 969 阅读 · 0 评论 -
Vue+ElementUI+C#技巧分享:周数选择器
这篇博客旨在深入探讨如何利用Vue和ElementUI来构建一个实用的周数选择器。周数选择器在很多类型的应用程序中都非常重要,尤其是在需要日期管理的系统中,如日历应用、项目管理工具或报告系统。正确地理解和计算周数对于确保数据的准确性和用户界面的一致性至关重要。然而,由于不同地区和标准对周的定义存在差异,开发这样的功能可能会带来挑战。原创 2023-11-26 19:41:34 · 1094 阅读 · 0 评论 -
C#与西门子PLC通讯——高手快速入门
本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。本文将以一个自动化立体车库作为案例入手,完成基于领域驱动设计(DDD)的项目设计。我们已经建立了一个自动化立体车库系统的基本的DDD框架,实现了C#与西门子PLC的通讯。原创 2023-11-14 10:48:50 · 2335 阅读 · 6 评论 -
架构设计快速入门——领域驱动设计(DDD)(C#)
在软件开发领域,为了更好地应对业务需求的复杂性和变化,开发者们一直在寻找更有效的开发方法。领域驱动设计(Domain-Driven Design,简称DDD)作为一种设计方法,强调了对业务领域的深入理解,并试图将这种理解映射到软件模型中。本文将深入探讨领域驱动设计在C#中的应用,介绍其基本概念、框架结构以及实际应用。原创 2023-11-11 13:10:43 · 4081 阅读 · 0 评论 -
C#与西门子PLC通讯——手搓S7通讯协议
知其然,知其所以然。这篇文章,我们就尝试重复造一个轮子。通过对通讯协议的简要分析,我们能够更好地了解与西门子PLC是如何交互的。最后,我们就运用底层方法,使用Socket通讯将一个数组读取出来,再将数组反转之后写回PLC中。本篇文章算是《C#与西门子PLC通讯》的番外篇,扒开了S7 Net Plus的神秘外衣,一探底层逻辑,了解了PLC的行为分析和通讯原理。原创 2023-10-29 00:16:29 · 5988 阅读 · 1 评论 -
C#与西门子PLC通讯——熟手快速入门
在实际通讯中,往往需要先确定地址,数据类型和读写规则。因此本文侧重数据类型讲解,辅以面向对象编程,完成一个桌面小程序。原创 2023-10-27 16:35:24 · 6614 阅读 · 13 评论 -
C#与西门子PLC通讯——新手快速入门
本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。原创 2023-10-25 16:39:06 · 16396 阅读 · 40 评论