linq

设计模式(8) 组合模式

最后都变了- 提交于 2020-07-27 10:14:19
组合模式 透明模式与安全模式 对组合的筛选遍历 无论是在生活中还是项目中,我们经常会遇到具有“部分-整体”概念的对象,比如员工与团队的关系,这就类似树形结构,可能具有很多的嵌套层次和分支,把这种复杂性直接暴露给调用端是不合适的。 组合模式 借助组合模式,可以将这类具有“部分-整体”的对象组合成树形的层次结构,并使得用户可以对单个对象和组合对象采用相同的使用方式。 GOF对组合模式的描述为: Compose objects into tree structures to represent part-whole hierarchies. Compositelets clients treat individual objects and compositions of objects uniformly. — Design Patterns : Elements of Reusable Object-Oriented Software UML类图: 组合模式包含三个角色: Leaf:叶子节点,代表单个个体,它没有子节点。 Composite:组合节点,既可以包含叶子节点,也可以包含其他的组合节点, Component:抽象构件,定义Leaf和Composite共有的方法和属性,可以定义一些默认的行为或属性。 透明模式与安全模式 在使用组合模式时,根据抽象构件类的定义形式

C# 创建INI文件,写入并可读取。

佐手、 提交于 2020-07-27 09:00:14
基于C#winform设计。 首先创建一个类,我命名为IniFiles。并引入命名空间using System.Runtime.InteropServices; 接着,声明API函数    [DllImport( " kernel32 " )] private static extern long WritePrivateProfileString( string section, string key, string val, string filePath); [DllImport( " kernel32 " )] private static extern int GetPrivateProfileString( string section, string key, string def, StringBuilder retVal, int size, string filePath); 写入INI函数方法 /// <summary> /// 写入INI文件 /// </summary> /// <param name="Section"> 项目名称(如 [TypeName] ) </param> /// <param name="Key"> 键 </param> /// <param name="Value"> 值 </param> public void

【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层的实现

大憨熊 提交于 2020-07-27 08:26:59
0. 前言 通过前两篇,我们创建了一个项目,并规定了一个基本的数据层访问接口。这一篇,我们将以EF Core为例演示一下数据层访问接口如何实现,以及实现中需要注意的地方。 1. 添加EF Core 先在数据层实现层引入 EF Core: cd Domain.Implements dotnet add package Microsoft.EntityFrameworkCore 当前项目以SqlLite为例,所以再添加一个SqlLite数据库驱动: dotnet add package Microsoft.EntityFrameworkCore.SQLite 删除 Domain.Implements 里默认的Class1.cs 文件,然后添加Insfrastructure目录,创建一个 DefaultContext: using Microsoft.EntityFrameworkCore; namespace Domain.Implements.Insfrastructure { public class DefaultContext : DbContext { private string ConnectStr { get; } public DefaultContext(string connectStr) { ConnectStr = connectStr; }

学习ASP.NET Core(08)-过滤搜索与分页排序

拟墨画扇 提交于 2020-07-27 07:21:12
上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志;本章我们将介绍过滤与搜索、分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的 使用 ASP.NET Core 3.x 构建 RESTful Web API 视频内容,若想进一步了解相关知识,请查看原视频 一、过滤与搜索 1、定义 1、什么是过滤?意思就是把某个字段的名字及希望匹配的值传递给系统,系统根据条件限定返回的集合内容; 按点外卖的例子来说,食物类别、店铺评分、距离远近等过滤条件提供给你,您自个儿根据需求筛选,系统返回过滤后的内容给你; 2、什么是搜索?意思就是把需要搜索的值传递给系统,系统按照其内部逻辑查找符合条件的数据,完成后将数据添加到集合中返回; 还是按点外卖的例子来说,一哥们张三特别喜欢吃烧烤,他在搜索栏中搜索烧烤,会出现什么?食物类别是烧烤的,店铺名称是烧烤的,甚至会有商品名称包含烧烤的,当然具体出现什么还要看系统的内部逻辑; 3、相同点及差异 相同点:过滤和搜索的参数并不是资源的一部分,而是使用者根据实际需求自行添加的; 差异:过滤一般是一个完整的集合,根据条件把匹配或不匹配的数据移除; ​ 搜索一般是一个空集合,根据条件把匹配或不匹配的数据往里面添加 2、实际应用 1、在前面的章节我们有提到过数据模型的概览,即用户看到的和存储在数据库的可能不是一个字段

C#与Visual C++在桌面软件的开发比较

北战南征 提交于 2020-07-27 06:01:14
microsoft公 司推出了visual系列软件开发环境,包括为C++程序员提供的Visual C++.程序员能用C++语言在其上开发图形界面的软件。微软随Visual C++提供了很多用于显示Windows界面的库函数。可以说Visual C++就是C++加上windows图形界面。 市面上任何一本Visual C++教材都是假设用户已经掌握了C++语言,重点在讲和Windows程序设计相关的东西,而且往往都要讲MFC.没有C++基础,根本无法理解MFC 的任何东西。 VC++相比较C#,可以带来3倍的性能优势,3-10倍的资源占用优势。 因为C++靠近底层,封装较少,需要自己铺路造轮子的地方较多。所以开发困难一些,但也带来了更多的优化手段和运行效率,能够更充分利用计算机硬件资源。 通用的商业软件,自然要提供最佳性能了。否则,别人开发一个更快的,你就完蛋了。 作者:无缺草 链接:https://www.zhihu.com/question/40551563/answer/559487447 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 大公司不使用C#的原因还有。让自己开发的程序跑在 .net 上真是很不放心。 打个比方 即使 C# 有 PInvoke之类的平台调用技术,也可以写Windows Hook 但是一般只能写普通的窗口Hook

ASP.NET Core MVC如何上传文件及处理大文件上传

纵然是瞬间 提交于 2020-07-27 02:52:31
用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的Action方法。这种情况下,如果上传一些小文件是没问题的,但是如果上传大文件,势必会造成服务器内存大量被占用甚至溢出,所以IFormFile接口只适合小文件上传。 一个文件上传页面的Html代码一般如下所示: < form method ="post" enctype ="multipart/form-data" action ="/Upload" > < div > < p > Upload one or more files using this form: </ p > < input type ="file" name ="files" /> </ div > < div > < input type ="submit" value ="Upload" /> </ div > </ form > 为了支持文件上传,form标签上一定要记得声明属性enctype="multipart/form-data",否则你会发现ASP.NET Core MVC的Controller中死活都读不到任何文件。Input type=

ASP.NET Core MVC如何上传文件及处理大文件上传

丶灬走出姿态 提交于 2020-07-26 23:36:10
用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的Action方法。这种情况下,如果上传一些小文件是没问题的,但是如果上传大文件,势必会造成服务器内存大量被占用甚至溢出,所以IFormFile接口只适合小文件上传。 一个文件上传页面的Html代码一般如下所示: < form method ="post" enctype ="multipart/form-data" action ="/Upload" > < div > < p > Upload one or more files using this form: </ p > < input type ="file" name ="files" /> </ div > < div > < input type ="submit" value ="Upload" /> </ div > </ form > 为了支持文件上传,form标签上一定要记得声明属性enctype="multipart/form-data",否则你会发现ASP.NET Core MVC的Controller中死活都读不到任何文件。Input type=

【LINQ标准查询操作符总结】之聚合操符

南楼画角 提交于 2020-07-26 23:29:43
C# 中的LINQ 提供了两种操作方式,查询表达式和查询操作符,所有的查询表达式都有对应的查操作符类替代,查询表达式有点“类” SQL,在代码中写SQL,总觉得不够“优雅”,使用查询操作符就显得“优雅”很多, 本系列就来对所有的LINQ 标准操作符进行一个全面的总结,这些操作符和我上篇文章总结的 RxJS操作符 有很多相似之处,甚至想通之处,有兴趣的可以点击链接查看。从整体来看C# 的LINQ 操作符分为13类,分别为聚合,转换,元素操作,相等操作,生成,分组,连接(join),分部,投影,数量,过滤,基于集的操作符,排序。熟练掌握LINQ对写代码的效率有很大的提高,可以说LINQ , lambda和 泛型已经变成C# 语言的基石。如果没有这三个特性下代码将会变得多么的无趣。 聚合操作符 聚合操作的所有返回值都只是一个值。 为了演示这里我们定义两个数组,一个表示字符串的数组textSource和一个表示int 类型的 numberSource数组: static string [] textSource = { " zero ", " one ", " two ", " three "," four "," five "," six "," seven "," eight "," nine " }; static int [] numberSource = { 0, 1, 2, 3

DataGridView Loading From LINQ

最后都变了- 提交于 2020-07-23 06:33:32
问题 I have a form with DataGridViews that have the DataSource set to a DataContext of my database to auto pull in the info and allow it to be edited. But I need a color to display a Color from the color id that corresponds to a color in a colors table and I don't know how I can achieve this with also allowing it to auto edit and update the records. private dbCounterTopsDataContext dbContext = new dbCounterTopsDataContext(); private void FrmCurrentInventory_Load(object sender, EventArgs e) {

DataGridView Loading From LINQ

蓝咒 提交于 2020-07-23 06:31:15
问题 I have a form with DataGridViews that have the DataSource set to a DataContext of my database to auto pull in the info and allow it to be edited. But I need a color to display a Color from the color id that corresponds to a color in a colors table and I don't know how I can achieve this with also allowing it to auto edit and update the records. private dbCounterTopsDataContext dbContext = new dbCounterTopsDataContext(); private void FrmCurrentInventory_Load(object sender, EventArgs e) {