随笔分类 -  .NET基础

1 2 3 4 5 ··· 11 下一页
摘要:需要扩展IQueryable<T>,参数包括一个DateTime类型的属性、开始日期、截止日期。 现在可以筛选满足某个日期范围内的集合。比如: 阅读全文
posted @ 2016-04-12 16:47 Darren Ji 阅读(2782) 评论(0) 推荐(0) 编辑
摘要:有这样的两个集合: string[] bigArr = new string[] { "a", "b", "c" };string[] smallArr = new string[] { "a", "b"}; 现在需要判断smallArr是否是bigArr的子集。只要拿着bigArray和small 阅读全文
posted @ 2016-04-09 11:52 Darren Ji 阅读(2869) 评论(0) 推荐(1) 编辑
摘要:我们是否可以把从前端接受的JSON字符串转换成字典集合呢?比如从前端接收:{'size':'10', 'weight':'10kg'}在服务端转换成:[{size:"10"},{weight:"10kg"}]这样的字典集合通过Newtonsoft的DeserializeObject<Dictiona 阅读全文
posted @ 2016-03-19 20:27 Darren Ji 阅读(8931) 评论(0) 推荐(2) 编辑
摘要:  本篇体验扩展StringBuilder使之支持链式方法。这里有一个根据键值集合生成select元素的方法。     以上,html.AppendFormat("<select id=\"{0}\" name=\"{0}\">", id);html.AppendLine();可以对这两个语句封装, 阅读全文
posted @ 2016-03-13 12:49 Darren Ji 阅读(995) 评论(0) 推荐(0) 编辑
摘要:  使用C#实现加减乘除算法经常被用作新手练习。本篇来分别体验通过委托、接口、匿名方法、泛型委托来实现。 加减乘除拥有相同的参数个数、类型和返回类型,首先想到了使用委托实现。     以上,委托用在了方法层面。如果在类层面,也可用接口封装加减乘除的共性。     委托还可以结合匿名方法一起使用。   阅读全文
posted @ 2016-03-13 00:47 Darren Ji 阅读(4002) 评论(5) 推荐(2) 编辑
摘要:  在函数式编程中,可以把函数看作数据。函数也可以作为参数,函数还可以返回函数。比如,LINQ就是基于函数式编程的。 语句式编程可能这样写:   而使用函数式表达式,可以简化为:   再来看一个过滤和排序的例子:   函数式编程可以写成如下:   或   可见,在LINQ中,一个表达式(函数)的返回 阅读全文
posted @ 2016-03-12 23:56 Darren Ji 阅读(2144) 评论(1) 推荐(0) 编辑
摘要:当应用程序需要和磁盘上的文件打交道的时候,就有了流的概念。流就像架设在应用程序所在内存和磁盘之间的一个管道。 大致思路 → 建立管道 //FileMode.Open打开现有文件,另外还有FileMode.Create, FileMode.Append //FileAccess表示对文件的操作权限Fi 阅读全文
posted @ 2016-03-08 10:07 Darren Ji 阅读(1656) 评论(0) 推荐(0) 编辑
摘要:当使用Entity Framework添加一对多关系数据的时候,通常先添加一的数据,然后再添加多的数据。类似这样: //添加一的数据 var category = new Category{Name="类别1"}; category = context.Categories.Add(category 阅读全文
posted @ 2016-03-03 10:06 Darren Ji 阅读(1644) 评论(0) 推荐(0) 编辑
摘要:场景是这样的:Order下有一个Suppler的集合,即一个订单下可能有多个供应商;Supplier下有一个Product的集合,即对一个供应商采购多个产品。需求是这样的:算出所有订购产品的总价模型这样: public class Order { public int OrderId { get; 阅读全文
posted @ 2016-02-25 11:09 Darren Ji 阅读(921) 评论(2) 推荐(0) 编辑
摘要:主要是想把日期和其它因素考虑进来。 使用RNGCryptoServiceProvider类创建唯一的最多8位数字符串。 private static string GetUniqueKey() { int maxSize = 8; int minSize = 5; char[] chars = ne 阅读全文
posted @ 2016-02-24 15:55 Darren Ji 阅读(1660) 评论(0) 推荐(0) 编辑
摘要:所谓的动态排序是指支持任意字段、任意升序降序的排序。我们希望在客户端按如下格式写:localhost:8000/api/items?sort=titlelocalhost:8000/api/items?sort=name,titlelocalhost:8000/api/items?sort=-nam... 阅读全文
posted @ 2016-01-21 14:58 Darren Ji 阅读(2953) 评论(2) 推荐(0) 编辑
摘要:在面对相互独立的数据或者相互独立的任务时,也许正是Parallel登场的时候。 比如说有一个盒子的集合,分别让盒子旋转一定的角度。 void RotateBox(IEnumerable boxes, float degree) { Parallel.ForEach(boxes, box => box.Rotate(degree)); } 如果并行任务中的一个任务出现异常,需要... 阅读全文
posted @ 2015-08-09 11:09 Darren Ji 阅读(1018) 评论(0) 推荐(0) 编辑
摘要:本篇体验如何等待所有异步任务完成、等待任意一个异步任务完成,以及异步任务完成时的处理。 等待一组任务的完成使用Task.WhenAll方法。 Task task1 = Task.Delay(TimeSpan.FromSeconds(1)); Task task2 = Task.Delay(TimeSpan.FromSeconds(2)); Task task3 = Task.Delay(... 阅读全文
posted @ 2015-08-09 09:17 Darren Ji 阅读(2245) 评论(0) 推荐(0) 编辑
摘要:在异步编程中,有时候希望把进度展示出来,借助IProgress可以实现。 IProgress只提供了一个方法void Report(T value),通过Report方法把一个T类型的值报告给IProgress,然后IProgress的实现类Progress的构造函数接收类型为Action的形参,通过这个委托让进度显示在UI界面中。 首先写一个方法,使用Report方法报告进度。 ... 阅读全文
posted @ 2015-08-08 19:04 Darren Ji 阅读(3344) 评论(4) 推荐(1) 编辑
摘要:Task.FromResult用来创建一个带返回值的、已完成的Task。 场景一:以同步的方式实现一个异步接口方法 比如有一个接口包含异步方法。 interface IMyInterface { Task DoSthAsync(); } 现在,需要以同步的方式实现该接口方法DoSthAsync,但要返回异步的结果。这正是Task.FromResult的用武之地。 public... 阅读全文
posted @ 2015-08-08 08:44 Darren Ji 阅读(3566) 评论(0) 推荐(0) 编辑
摘要:如果想让程序异步等待一段时间,可以考虑使用Task.Delay方法。 比如,在单元测试中模拟一个异步操作。 static async Task DelayedResult(T result, TimeSpan delay) { await Task.Delay(delay); return result; } 又比如,当我们需要远程下载内容,由于远程服务器的状态未必稳... 阅读全文
posted @ 2015-08-07 17:05 Darren Ji 阅读(923) 评论(0) 推荐(0) 编辑
摘要:当有大量的数据需要处理或者有大量任务需要完成,而且每块数据或每个任务是彼此独立的,这时候可以考虑使用并行编程。现代计算机都是多核的,并行编程可以提高CPU利用率以提高吞吐量。 Parallel.Invoke形参能接收一个Action数组。 static void Main(string[] args) { Test(); ... 阅读全文
posted @ 2015-08-07 16:15 Darren Ji 阅读(744) 评论(0) 推荐(0) 编辑
摘要:在.NET异步编程中,通常使用async和await这对黄金搭档,返回类型使用Task或Task。在方法前面加async表示这个方法运行异步,在方法内使用await表示执行一个异步等待。 下面是一个简单例子: static void Main(string[] args) { Doth(); Console.... 阅读全文
posted @ 2015-08-07 12:43 Darren Ji 阅读(3120) 评论(3) 推荐(1) 编辑
摘要:我们知道,使用string.Format方法可能会存在装箱的情况。比如如下: static void Main(string[] args) { string s = string.Format("拼接{0}和{1}", 1, 2); Console.WriteLine(s); Conso... 阅读全文
posted @ 2015-08-02 07:39 Darren Ji 阅读(1350) 评论(3) 推荐(0) 编辑
摘要:今天在项目中遇到了使用switch语句判断条件,但问题是条件比较多,大概有几十个条件,满屏幕的case判断,是否有更优雅的写法替代switch语句呢? 假设有这样的一个场景:商场经常会根据情况采取不同的打折方案,如果打折方案比较少,可以考虑使用switch语句作判断。但如果有几十甚至几百种打折方案的时候,用switch语句就不够优雅。 先来一个打折接口。 public inter... 阅读全文
posted @ 2015-07-16 15:53 Darren Ji 阅读(10957) 评论(8) 推荐(1) 编辑

1 2 3 4 5 ··· 11 下一页

我的公众号:新语新世界,欢迎关注。

点击右上角即可分享
微信分享提示