上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 40 下一页
摘要: Enumerable.Cast<T>用于将IEnumerable转换为泛型版本IEnumerable<T>。转换后可尽情享用Enumerable的其它方法(如Where、Select),给我们的编码带来极大便利。但MSDN中仅给出一个转换ArrayList的例子,很多人看了感觉现在都在用List<T>,还有谁会用ArrayList,Cast<T>没多少用处,除非处理一些之前遗留的一些代码。其实Cast<T>并非如此简单,它可以用在很多地方。先看MSDN中举的例子吧:1System.Collections.ArrayListfruits 阅读全文
posted @ 2013-06-09 13:24 于为 阅读(572) 评论(0) 推荐(0) 编辑
摘要: Enumerable.Aggregate 扩展方法在System.Linq命名空间中,是Enumerable类的第一个方法(按字母顺序排名),但确是Enumerable里面相对复杂的方法。MSDN对它的说明是:对序列应用累加器函数。备注中还有一些说明,大意是这个方法比较复杂,一般情况下用Sum、Max、Min、Average就可以了。看看下面的代码,有了Sum,谁还会用Aggregate呢!publicstaticvoidTest1(){int[]nums=newint[]{1,2,3,4,5,6,7,8,9,10};intsum1=nums.Sum();intsum2=nums.Aggreg 阅读全文
posted @ 2013-06-09 13:23 于为 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 先看下ScottGu对In的扩展:调用示例1:调用示例2:原文地址:New "Orcas" Language Feature: Extension Methods很多介绍扩展方法的也大都使用"In"作为例子,但很少有人再深入想一步。个人感觉这个In扩展的不够彻底,试看如下代码:publicstaticvoidExample1(){boolb1=1.In(newint[]{1,2,3,4,5});boolb2="Tom".In(newstring[]{"Bob","Kitty","Tom 阅读全文
posted @ 2013-06-09 13:22 于为 阅读(248) 评论(0) 推荐(0) 编辑
摘要: .net 中创建Expression Trees最简单的方式是使用 lambda 表达式:12Expression<Func<Person, bool>> exp = p => p.Name.Contains("ldp") && p.Birthday.Value.Year > 1990;其中 Person 类定义如下:1234public class Person { public string Name { get; set; } public DateTime? Birthday { get; set; }}但有些时候 阅读全文
posted @ 2013-06-09 13:21 于为 阅读(379) 评论(0) 推荐(1) 编辑
摘要: 刚看了篇文章 《Linq的Distinct太不给力了》,文中给出了一个解决办法,略显复杂。试想如果能写成下面的样子,是不是更简单优雅:12var p1 = products.Distinct(p => p.ID);var p2 = products.Distinct(p => p.Name);使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风格。可通过扩展方法实现:Distinct 扩展方法首先,创建一个通用比较的类,实现 IEqualityComparer<T> 接口:123456789101112131415161718192021222324usi 阅读全文
posted @ 2013-06-09 13:18 于为 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 相信大家在看了本文的题目之后,马上就能写出 IsBetween 扩展来:public static bool IntIsBetween(this int i, int lowerBound, int upperBound, bool includeLowerBound = false, bool includeUpperBound = false){ return (includeLowerBound && i == lowerBound) || (includeUpperBound && i == upperBound) || (i > lowerB.. 阅读全文
posted @ 2013-06-09 13:17 于为 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 一、Where 扩展的不足如下界面,可通过姓名、编号和地址对人员进行模糊查询:我们通常会写出如下代码:public IQueryable<Person> Query(IQueryable<Person> source, string name, string code, string address){ var result = source; if(string.IsNullOrEmpty(name) == false) result = source.Where(p => p.Name.Contains(name)); if (string.IsNullOr. 阅读全文
posted @ 2013-06-09 13:16 于为 阅读(333) 评论(0) 推荐(1) 编辑
摘要: 向字典中添加键和值添加键和值使用Add方法,但很多时候,我们是不敢轻易添加的,因为Dictionary<TKey, TValue>不允许重复,尝试添加重复的键时Add方法引发ArgumentException。大多时候,我们都会写成以下的样子:var dict = new Dictionary<int, string>();// ...// 情形一:不存在才添加if (dict.ContainsKey(2) == false) dict.Add(2, "Banana");// 情形二:不存在添加,存在则替换if (dict.ContainsKey(3 阅读全文
posted @ 2013-06-09 13:13 于为 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 在 .Net 中,我们一般使用Random类来生成随机数,它仅提供了以下几个基本方法供我们使用:名称说明Next()返回非负随机数。Next(Int32)返回一个小于所指定最大值的非负随机数。Next(Int32, Int32)返回一个指定范围内的随机数。NextBytes用随机数填充指定字节数组的元素。NextDouble返回一个介于 0.0 和 1.0 之间的随机数。如果想生成一些特殊的随机数,如枚举、日期等,则要再进行几步处理。本文将会扩展Random类,让随机更方便。Random 常用扩展布尔:NextBool随机返回 true 或 false,这个实现比较简单:public stat 阅读全文
posted @ 2013-06-09 13:11 于为 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 转换为十六进制字符串1publicstaticstringToHex(thisbyteb)2{3returnb.ToString("X2");4}56publicstaticstringToHex(thisIEnumerable<byte>bytes)7{8varsb=newStringBuilder();9foreach(bytebinbytes)10sb.Append(b.ToString("X2"));11returnsb.ToString();12}第二个扩展返回的十六进制字符串是连着的,一些情况下为了阅读方便会用一个空格分开,处理比 阅读全文
posted @ 2013-06-09 13:10 于为 阅读(245) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 40 下一页