摘要:
今天,我们将着眼于五个用于序列的聚合运算。很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果。Enumerable 静态类的LINQ扩展方法可以做到这一点 。就像之前大多数的LINQ扩展方法一样,这些是基于IEnumerable <TSource>序列的操作。SUM() - 计算整个序列的总和它有两种形式:SUM( )计算整个序列的总值。源类型必须是以下类型之一: int,long,double,decimal,single 或这些类型的可空变种(int?, long?, double?…) 。Sum(Func<TSource, X> p 阅读全文
摘要:
概要WebMatrix对于快速建站的确很有帮助,我曾经用它建立基于 Wordpress, Joomla, DNN 等平台的项目,省却了很多设置上的麻烦,只需要傻瓜式的点击下一步和输入一些基本信息即可。文本介绍如何在WebMatrix项目中使用和读取 SQL Server CE 数据库。如果你第一次听说WebMatrix可以参考本系列的前三篇文章。正文1. 打开WebMatrix 选择 site from Template, 再选择 Starter Site 模板。在这里我给网站命名为Starter Site. 然后点击下方的Files, 你可以看到网站的初始结构。2. 点击Databases, 阅读全文
摘要:
前段时间忙于各处奔波没有写博,今天想和大家再来看看一个奇妙的函数。 首先假设你不得不处理一些已有的代码,里面用到了nullable(可空值类型)的变量, 你必须要用这变量与不可空变量比较. 使用 <, >, <=, >= 来比较 nullable 值 看下面的代码: 1: int? x = null; 2: 3: if (x < 100) 4: { ... 阅读全文
摘要:
谢谢大家之前的关注和热情的回复,本文将继续探讨在System.Linq 下的一些容易被人忽视却可能对你有大帮助的函数。Empty 静态方法有多少次你不得不从一个方法返回一个空集合(无论是由于错误的条件,或者没有项目存在),并创建了一个空数组或列表? 让我们看一个简单的POCO 类,它包含了两个银行帐户转帐的信息: public class Transfer { public string FromAccount { get; set; } public string ToAccount { get; set; } public double Amount { get; set; } }现在,比 阅读全文
摘要:
那日,我与一友人漫步。他资质过人,少言寡欲, 刚二十出头。他经常问我应该怎么走程序员这条路。我不是什么大师,但仗键(盘)游走江湖已有数十载,吃过不少苦头。自以为不敢说到达了洪七公那种级别,但离江南七怪应该距离不远了。(注:洪七公和江南七怪都是郭靖的师父)我闭目沉思,悟空(七龙珠版),青铜圣斗士,健次郎(北斗神拳),郭靖(射雕),段誉和乔峰(天龙八部)等历史著名斗士冲入我的空间,我提指在 iphon... 阅读全文
摘要:
今天我们来看看5种使用Linq函数联接序列的方法,这5种方法可以归入下列两类:同类的联接Concat() Union()不同类的联接Zip() Join() GroupJoin()Concat() – 串联序列最简单的序列合并,concat仅仅是将第二个序列接在第一个序列后面, 注意:返回的序列并没有改变原来元素的顺序: var healthFoods = new List<string> { "fruits", "vegetables", "grains", "proteins" }; var myF 阅读全文
摘要:
Linq中的 First 和 Single 在实际工作中会经常看到,从字面意思上很容易明白,一个是取列表中的第一个元素,一个是取到唯一的元素。如果你想再进一步的了解,可以读读本文。下文参考翻译自: C#/.NET Little Wonders: First() and Single() - Similar Yet DifferentFirst() - 返回序列中的第一个元素事实上这个方法有四种选择:First() 返回序列中的第一个,如果没有元素存在就抛出异常 InvalidOperationException. First(Predicate<TSource>) 基于你提供的条件 阅读全文
摘要:
这个系列,我和大家一起来学学C#中一些非常有用函数,对于有些人来说可能它们不起眼,因此常常忽略它们。它们不会嚷嚷到:“使用我吧!我会让你节省很多的时间,而且让你的代码变得更加的简洁!” -- 但是,这些话会从对它们熟悉的程序员的脑海中涌现出来。好的!先来看看ToLookup:下文参考翻译自: C#/.NET Little Wonders: The ToLookup() LINQ Extension Method故事的背景让我们先来创建一个简单的类来表示产品,产品有ID,类别,和价格,这个类没有什么特别: public sealed class Product { public int Id { 阅读全文
摘要:
如果你有一个一对多的关系,您想对两个表执行Join,但你只想要将每一个“一对多”关系的中产生一行,你可以参考下面:一个很容易理解的例子,比如博客园的随笔(Post)和评论(comment)两个表,如下图:如果你想获取随笔的ID, Title 和 一个评论的ID, 内容的话,有以下两个方案:方案一:方案二:第一个方案在有很少随笔,但是每个随笔有很多评论的情况下更优;第二个方案在随笔数目多,但是每个随笔的评论较少的情况下更优;大家可以想想原因。本文来自喜乐的ASP.NET(Alex Song) 阅读全文
摘要:
在我之前"优雅代码"的文章中我提到了函数大小规定的问题,写出优雅简明代码的论题集 -- Csharp(C#)篇[1]写出优雅简明代码的论题集 -- Csharp(C#)篇[2]在这篇文章中我还想更详细的谈谈为什么好的代码必然不会有大的函数,-- 写小的函数不是我们的目的,但是为了使你的代码可读性强,你开始花时间重构它们,然后,你发现函数开始缩小,类开始缩小。最后你会发现这才是你想要的代码--就像是一本更贴切用户需求的文档。一个函数只做一件事一个函数应该只做一件事,这样不但你能够更好的命名你的函数,理解和阅读代码也变得更加的容易。如果你遇到一个特殊的情况不得不打破这个原则,可 阅读全文
摘要:
之前有人问我这个问题。我回答:如果你使用Visual Studio 2010,那么 NuGet 可以使你的生活更加美好。当你项目里要引用到的一些库时候,比如JQuery 库或者 NHibernate, NUnit, log4net 你就可以考虑使用NuGet。它可以辅助你安装或者更新这些库。当然我不得不继续说下去从安装到使用:NuGet是一个Visual Studio 的扩展, 首先你必须要安装它:可以到官方网站: http://nuget.org/然后设置自动检查更新进入 工具|选项,然后环境|扩展管理器 ,点击“ 自动检查更新,安装的扩展。 “当你有一个Visual Studio扩展安装像 阅读全文
摘要:
搜索功能(新!) 在Visual Studio中有许多不同的搜索方法(增量搜索,快速查找,在文件中查找,查找工具栏等),对于一个给定的任务往往是不太明确的。 而且查找对话框本身也使得我们没法很好的查看和跳跃代码。 Productivity Power Tools 增加了新的查找扩展。 在编辑文本的状态下,按Ctrl + F 就弹出了这个小而强大的窗口,通过这个窗口你可以使用大多数的快速查找功能,如替换,大小写的选项,并增加了NET的正则表达式! 增强的滚动条 (新!)Enhanced Scroll Bar 提供三种模式(你可以在工具选项中选择不同模式: Scroll bar/ Map/ Ful 阅读全文
摘要:
我在Scott Guthrie的博客中看到这则消息,他发布的时候应该比我早几个钟头。 Pluralsight (一个非常好的 .NET 培训公司) 给大家提供一个免费观看他们教程 jQuery 基础课程 机会, 但是只有36小时,而且没有中文的翻译,不过英文好的或者可以阅读英文的朋友应该可以看看. 这个课程是由 Dan Wahlin 推出的,包含 5 小时的内容. 这个课程免费观看应该是截至到北京时间星期五早上. 下面是我翻译的目录:jQuery的基础知识 35分33秒 简介 - 为什么使用jQuery?08:46 引用一个jQuery脚本06:24 使用CDN04:57 使用jQuery r 阅读全文
摘要:
谢谢大家对本系列第一篇写出优雅简明代码的论题集 -- Csharp(C#)篇[1]的回复和讨论,我相信针锋相对的辩论不仅有助于发现答案,更让我们了解问题后面的实质。对程序员而言,我们的代码需要:1. 在预算内实现需求,让用户可以使用 -- 让自己或者公司可以赚到钱2. 方便自己修改及日后维护3. 方便别人修改及日后维护4. 便于重复使用,为以后的开发节省时间5. 让系统高效的运作从美国商学院毕业的... 阅读全文
摘要:
最近和一些朋友讨论如何写出优雅的代码,我们都很喜欢C#,所以以C#为例。主要一共有三位程序员在一起讨论,为简单起见我用ABC代表我们三个人。
有时候我们会针对一些代码进行讨论,有时候我们会提出一些观点,有时候我们会一起学习网上一些现有的博客,为了便于大家引用,我给每一个论题都编上号。
在很多情况下,我们的意见统一,那么我会给大家呈现我们的结论;但是有些情况我们有分歧。
你可以加入我们的讨论,我非常也希望能够获知你的意见,让我们一起茁壮成长! 阅读全文