C#
会飞的尼古拉斯
没有个性,但比较尿性
展开
-
数据校验 FluentValidation使用详解
创建第一个认证若要为特定对象定义一组验证规则, 您需要创建一个从 AbstractValidator 继承的类, 其中泛型T参数是要验证的类的类型。假设您有一个客户类别:接下来自定义继承于 AbstractValidator 泛型类的验证器,然后在构造函数中使用 LINQ 表达式编写 RuleFor 验证规则。若要执行验证程序,我们通过定义好的 CustomerValidator 验证器传入实体类 Customer 即可。该验证方法返回一个 ValidationResult 对象,表示验证结果,Va原创 2024-01-19 15:34:43 · 994 阅读 · 0 评论 -
C# 根据指定的类型,动态转换object数据到指定类型
动态转换数据类型原创 2023-12-26 10:42:19 · 768 阅读 · 0 评论 -
.net 洋葱模型
Mybusiness 这是实现业务的地方,注入两个接口,一个是获取数据,一个是发送信息,实现均在控制台工程实现。简单的例子,引用依赖图。原创 2023-12-12 16:38:04 · 320 阅读 · 0 评论 -
winform 程序多语言
ResourceManager第一个参数是"工程名称.Properties.资源文件名称"原创 2023-11-29 10:04:45 · 284 阅读 · 0 评论 -
C# 关于Parallel并行
并行的两种方式 private void Form1_Load(object sender, EventArgs e) { CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token;原创 2022-05-13 14:40:14 · 853 阅读 · 0 评论 -
C# 从list 或者string中随机获取一个
public static class EnumerableExtension{ public static T PickRandom<T>(this IEnumerable<T> source) { return source.PickRandom(1).Single(); } public static IEnumerable<T> PickRandom<T>(this IEnumerable<T&原创 2022-01-27 13:05:57 · 1975 阅读 · 0 评论 -
WPF 启动exe时传递参数
1 新建一个类,包含main函数我写在APP.Xaml.cs里using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Linq;using System.Threading.Tasks;using System.Windows;namespace HLZDVideo{ /// <summary> /// Ap原创 2021-11-08 13:36:06 · 899 阅读 · 0 评论 -
wpf 接收Windows消息 WndProc
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.D原创 2021-11-06 01:38:38 · 644 阅读 · 0 评论 -
Windows 下一个EXE往另一个EXE传递消息WndProc
send exeusing System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.原创 2021-11-06 01:37:11 · 314 阅读 · 0 评论 -
C# dynamic 解析Json
https://www.newtonsoft.com/json/help/html/QueryJsonDynamic.htmstring json = @"[ { 'Title': 'Json.NET is awesome!', 'Author': { 'Name': 'James Newton-King', 'Twitter': '@JamesNK', 'Picture': '/jamesnk.png' }, 'Date': '20原创 2021-10-13 13:31:42 · 1142 阅读 · 1 评论 -
C# sqlite 事务
https://zetcode.com/csharp/sqlite/1 安装依赖包System.Data.SQLite.Core2 demousing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace sqlitedemo{ class Program { static vo原创 2021-08-11 14:09:36 · 791 阅读 · 0 评论 -
wpf 使用templatebinding,并设置button的背景图片
https://www.cnblogs.com/xpvincent/p/4475679.htmlxaml<Window x:Class="WpfButton.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http:/原创 2021-08-09 10:11:05 · 1049 阅读 · 0 评论 -
C#高效的比较两个集合/byte是否一致
使用Linqvar a1 = new int[] { 1, 2, 3};var a2 = new int[] { 1, 2, 3};var a3 = new int[] { 1, 2, 4};var x = a1.SequenceEqual(a2); // truevar y = a1.SequenceEqual(a3); // false使用微软自带方法using System;using System.Collections.Concurrent;using System..原创 2021-08-06 16:51:28 · 769 阅读 · 0 评论 -
C# 深拷贝与浅拷贝
实体类如下 class CWebPage { public Uri Uri; // E.g. http://www.google.com public int Count; // E.g. 10 } var list = new List<CWebPage>(); 通过构造函数实现浅拷贝 var copy = new List<CWebPage>(list);如果要对列表进行排序,那么浅拷贝很有用。在这种情况下,我们尤原创 2021-08-03 12:34:31 · 257 阅读 · 0 评论 -
C# MongoDB.Driver in 查询
当我们尝试在MongoDB中使用linq contains查询时,会报错Unsupported filter contains in linq. How to use contains and ToLower in linq query? [duplicate]解决方式是使用Inpublic async Task<List<T>> GetByLine(List<double> linno, DateTime startTime, DateTime endTime原创 2021-07-22 08:57:31 · 794 阅读 · 0 评论 -
C# list 集合取差
public class ProductA: IEquatable<ProductA>{ public string Name { get; set; } public int Code { get; set; } public bool Equals(ProductA other) { if (other is null) return false; return this.Name == other原创 2021-07-16 11:35:34 · 367 阅读 · 0 评论 -
cefsharp 增加内存
将这些参数传递给chrome可执行文件以将javascript内存限制设置为16GB时,chrome会将其设置为3.5GB。CefSettings settings = new CefSettings();settings.CefCommandLineArgs.Add("--js-flags", "--max_old_space_size=16384");原创 2021-07-15 16:06:11 · 1811 阅读 · 0 评论 -
ASP.net core 集成log4.net
NET常用的日志组件有NLog、Log4net等,.NET CORE下微软也自带了日志组件,到目前为止还没用过,而我本人常用的是log4net,下面简单讲讲.NET CORE下怎么使用log4net记录日志。新建一个ASP.NET CORE项目,为项目添加log4net程序包, 并添加log4.config文件, 添加Logger类using log4net;using log4net.Config;using System;using System.Collections.Generi原创 2021-07-09 08:33:10 · 471 阅读 · 0 评论 -
C# HttpClient 获取网络时间
主要思想就是访问百度,从头信息里提取信息,DateTime 的LocalDateTime 就是对应本地的时间,可以避免本机更改时间无法获得正确时间private async void getRealTime() { var uri = "https://www.baidu.com"; var handler = new HttpClientHandler() { AutomaticDecompression = Decompression原创 2021-07-02 14:31:26 · 636 阅读 · 0 评论 -
C# 按enter键,实现移动到下个tabindex(焦点)
重写窗体的KeyDown事件即可protected override void OnKeyDown(KeyEventArgs e) { if (e.Key == Key.Enter) { // MoveFocus takes a TraveralReqest as its argument. TraversalRequest request = new TraversalRequ原创 2021-06-15 16:21:21 · 786 阅读 · 0 评论 -
C# 将object类型转换成List
public List<CariHesapEkstre> ConvertToDesiredType ( object list ) { return ( (IEnumerable<dynamic>)list ).Select(item => new CariHesapEkstre { MutabakatDetayId = item.MutabakatDetayId, MutabakatVar原创 2021-06-02 11:53:40 · 12925 阅读 · 1 评论 -
C# NPOI读写Excel
button:2个 用来触发数据导入导出excel的事件lable: 2个 用来显示数据导入导出excel的耗时datagridview :1个 用来显示数据导入的结果安装NPOINPOIExcel.csusing NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System;using System.Collections.Generic;using System.Data;u转载 2021-05-31 16:02:44 · 2214 阅读 · 3 评论 -
C# MongoDB.driver 解决插入时间与实际相差8小时
由于MongoDb存储时间按照UTC时间存储的,其官方驱动MongoDB.driver存储时间的时候将本地时间转换为了utc时间,但读取的时候是返回的是utc时间。一个非常直观的体现是时间类型字段存储后和再读入的是不一致的。解决方式在时间类型属性字段上显式标注是否为本地时间[BsonDateTimeOptions(Kind = DateTimeKind.Local)]public DateTime dt { get; set; }using System;using System.Collect原创 2021-05-31 13:33:58 · 1079 阅读 · 0 评论 -
C# ConcurrentQueue (线程安全)
http://dotnetpattern.com/csharp-concurrentqueueAdd Items in ConcurrentQueueIt provides an Enqueue method to add any item at the end of the queue. Enqueue takes the argument which data type matches with the type argument. Below is the example.ConcurrentQ原创 2021-05-19 08:32:17 · 1616 阅读 · 0 评论 -
C# DataTable 转成 IEnumerable
AsEnumerableusing System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApp1{ class Program { //程序入口 static void原创 2021-05-17 11:04:38 · 868 阅读 · 0 评论 -
C# task 取消线程
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApp1{ class Program { //声明CancellationTokenSource对象 static CancellationTo原创 2021-05-17 10:33:39 · 5296 阅读 · 1 评论 -
C# Flurl 高性能的访问http
安装nuget 搜索安装flurl.http使用 var url = "http://www.some-api.com" .AppendPathSegment("login") .SetQueryParams(new { name = "Lee", pwd = "123456" }); //构造出来的url:https://www.som..转载 2021-05-12 09:10:59 · 3980 阅读 · 0 评论 -
wpf中的convert的使用
需求中经常有这样的问题,我输入的是一种数据类型,但是我在界面显示的完全不同的东西。这样就需要转换。比如界面的listbox绑定的数据源为Student类,需要将性别显示出来Studentusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WpfApp.Model{ public class .原创 2021-05-08 09:27:10 · 1433 阅读 · 0 评论 -
C# 动态编译,调用python等
// Install-Package IronPython // 需要安装此 Nuget包// 引入动态类型之后// 可以在C#语言中与动态语言进行交互// 下面演示在C#中使用动态语言PythonScriptEngine engine = Python.CreateEngine();// 调用Python语言的print函数来输出engine.Execute("print 'Hello world'");// 调用python求解汉罗塔问题engine.Execute(Pyth原创 2021-05-08 08:31:47 · 355 阅读 · 0 评论 -
C# 一行代码将string数组转换成int 数组
很简单,用 Array.ConvertAll 方法直接强转即可。string[] vs = new string[] {"2","3","4" };int[] myInts = Array.ConvertAll(arr, int.Parse); 如果用 Linq 的话,你可以将 int.Parse 丢到 Select 扩展方法即可。string[] vs = new string[] {"2","3","4"};int[] myInts = arr.Select(int.Parse).ToAr原创 2021-05-06 14:57:44 · 3700 阅读 · 0 评论 -
C# 剔除list中的重复值(重写GetHashCode)
假如有这么一个类 class Items { public int Age { get; set; } public string Name { get; set; } public string Address { get; set; } }需要提取list中的唯一值,可以使用以下方法linqList<Items> items = new List<Items>() { new原创 2021-05-06 14:47:21 · 570 阅读 · 0 评论 -
C# 使用linq操作xml
一、XML基本概述 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件。转载 2021-04-28 09:06:08 · 2787 阅读 · 0 评论 -
wpf 另存style在统一的文件中,并在需要时引用
1 新建一个xaml 文件保存style<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp.Styles"> &原创 2021-04-27 09:58:07 · 194 阅读 · 0 评论 -
C# dataset 序列化为xml,以及xml反序列化到dataset
using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Serialization;namespace ConsoleApp1{ class Program { static void Mai原创 2021-04-15 09:38:15 · 748 阅读 · 0 评论 -
C# start一个被disable的服务
disable 一个服务RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\[YourServiceName]", true);key.SetValue("Start", 4);Process sc = Process.Start("sc.exe", "config [YourServiceName] start= disabled");开启一个状态为disable的服务R原创 2021-02-22 10:33:05 · 298 阅读 · 0 评论 -
C# 使用MSMQ
消息一旦发送到队列中,便会一直存在,即使发送的应用程序已经关闭。MSMQ服务默认是关闭的,(Window7及以上操作系统)按以下方式打开1、打开运行,输入"OptionalFeatures",钩上Microsoft Message Queue(MSMQ)服务器。(Windows Server 2008R2及以上)按以下方式打开2、打开运行,输入"appwiz.cpl",在任务列表中选择“打开或关闭Windows功能”然后在"添加角色"中选择消息队列消息队列分为以下几种,每种队列的路径表示形原创 2021-01-18 15:39:44 · 440 阅读 · 0 评论 -
C# 写入log到event viewer
string source = "DemoSourceWithinApplicationLog";//写exe名称即可,容易识别 string log = "Application"; if (!EventLog.SourceExists(source)) { EventLog.CreateEventSource(source, log);//没找到先注册 }原创 2020-12-29 08:17:29 · 272 阅读 · 0 评论 -
C# dllimport demo
本文介绍C# call C++的dll的使用方法首先根据注册表键获取想要加载的dll的路径using Microsoft.Win32;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace FTAStubUtility.GetRegistryValue{ public class GetRegis原创 2020-12-29 08:02:15 · 362 阅读 · 0 评论 -
C# FileSystemWatcher
FileSystemWatcher 常用于文件系统变更的监控,可以监视一个文件夹,当被监视的文件夹发生修改后,大概会触发以下函数:Created: 当新建文件或者文件夹Changed:当文件或者文件夹已经完成修改Renamed:当文件或者文件夹完成重命名Deleted:当文件或者文件夹被删除Error:当变更过程发生错误一个简单地文件监控demousing System;using System.Collections.Generic;using System.IO;using Sy原创 2020-12-21 08:36:12 · 1153 阅读 · 2 评论 -
C# lazy懒加载
延迟初始化 是一种将对象的创建延迟到第一次需要用时的技术,换句话说,对象的初始化是发生在真正需要的时候才执行,值得注意的是,术语 延迟初始化 和 延迟实例化 的意思是相同的——可以互换使用,通过使用 延迟初始化 技术,可以避免应用程序不必要的计算和内存消耗,这篇文章我们将会讨论如何在 C# 中使用 延迟初始化。demousing System;using System.Collections.Generic;using System.Linq;using System.Text;using Sy原创 2020-12-15 14:06:48 · 1959 阅读 · 0 评论