Skip to content
久久日记本
曾经年少爱追梦,一心只想往前飞
  • 首页
  • 博客
    • 博客历史
    • 主题
    • 个人文集
  • 关于
    • 正在读的书
    • 作品归档
    • 2018作品归档
    • 联系我
  • 友情链接
  • 留言板
❄
❅
❆
❄
❅
❆
❄
❅
❆
❄
.NET

Linq常用语法和Lambda表达式总结

Posted on 2013年5月27日 by 九九 / 2006 Views

本文目录

目录

*1.查询语法与方法语法

*2.查询变量

*3.查询表达式的结构

*4.利用orderby可以对数字进行排序

*5.lambda表达式

*6.lambda表达式的优越性

最近想为一个自己喜欢的网站做WP7客户端,顺便好学学以前没有掌握好的知识。

因为原网站太老,数据太多,没有RSS订阅源,没有什么所谓的API。看来只能是直接获取网站的源代码然后用正则表达式处理。先做个简单的小功能吧,虽说简单,不知道原网站任何代码和后台处理方式,自己也是个小菜鸟,只有硬来了,源码、正则表达式处理吧。

在windows界面上做的很好的代码,无奈相似的方式在WP7中获取源代码都出现点问题,遇到了注册事件,写好了方法,但是却不知道怎么返回值,只能直接写在当前方法的前面,但是想想,程序中要用到很多这种方法,所以还是适合统一到类里面。但是返回值,一个问题。

说道注册事件,不免看了看Linq和Lambda,我想它们应嘎可以帮我的忙,看完给自己留下一段简单的总结。边学边做。

1、查询语法与方法语法

① 查询语法(query syntax)是声明形式的,看上去和SQL语句很相似。查询语法使用查询表达式形式书写。

② 方法语法(method syntax)是命令形式的,它使用的是标准的方法调用。方法是一组叫做标准查询运算符的方法。

③ 在一个查询中也可以组合两种形式。

例子:
“`C#
protected void btnSel_Click(object sender, EventArgs e)
{
int[] num = { 2, 5, 34, 66, 96, 80, 13 };
//查询语法

var numsel = from n in num
                where n < 35
                select n;


//方法语法
//var numsel = num.Where(x=>x<35);

//两种形式的结合
int numcount = (from n in num
                where n < 35
                select n).Count();


foreach (var item in numsel)
{
    Response.Write(item+"  ");
}

Response.Write(numcount);

}

######2.查询变量
>①创建int数组。

>②返回一个IEnumerable对象,它可以用来枚举查询结果。

>③执行一个查询,然后调用一个方法(Count)来返回从查询返回的项的总数。

```C#
protected void btnCh_Click(object sender, EventArgs e)
{
    int[] nums = { 2, 6, 3, 17 };
    //返回枚举数
    IEnumerable<int> numsel = from n in nums
                                where n < 13
                                select n;//输出:2,6,3

    int numcount = (from n in nums
                    where n < 13
                    select n).Count();//输出:3

    foreach (int item in numsel)
    {
        Response.Write(item+",");
    }
    Response.Write(numcount);
}

PS:有必要用枚举么?觉得还是1中的直接用方便。

3.查询表达式的结构

子句必须按照一定的顺序出现

① from子句和select…group子句这两部分是必须的。

② 其他子句是可选的。

查询体 from
from… let… where…(可选)
order by… (可选)
select… group…
Into (可选)

PS:不常用就没怎么总结了。

4.利用orderby可以对数字进行排序

例如:

“`C#
protected void btnpx_Click(object sender, EventArgs e)
{
int[] nums = { 3, 15, 67, 72, 21, 34, 21, 6 };
var numsel = from n in nums
orderby n
//where n<50
select n;//输出:3,6,15,21,21,34,67,72,
foreach (var item in numsel)
{
Response.Write(item+”,”);
}
}


PS:如果用来替换冒泡排序不是挺好! ######5.lambda表达式 第一行演示了被赋值给变量`del`的匿名方法。 第三行演示了被转换成`lambda`表达式后的相同的匿名方法 ```C# delegate double MyDel(int par); protected void btnlam_Click(object sender, EventArgs e) { MyDel del = delegate(int x) { return x + 1; };//匿名方法 MyDel le1 = (int x) => { return x + 1; };//lambda表达式 MyDel le2 = (x) => { return x+1; }; MyDel le3 = x => { return x + 1; }; MyDel le4 = x => x + 1; Response.Write(del(5)); Response.Write(le1(5)); Response.Write(le2(5)); Response.Write(le3(5)); Response.Write(le4(5)); }
6.lambda表达式的优越性

例子:计算数组中奇数的数量

①使用委托

“`C#
static bool IsOdd(int x)//委托对象使用方法
{
return x % 2 == 1;//如果是x奇数,返回true
}
protected void btndelegate_Click(object sender, EventArgs e)
{
//使用委托
int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 };
Func<int, bool> myDel = new Func<int, bool>(IsOdd);//委托对象
var countOdd = intArray.Count(myDel);

Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 4

}

>②使用匿名方法

```C#
protected void btnfun_Click(object sender, EventArgs e)
{
    //使用匿名方法
    int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 };
    Func<int, bool> myDel = delegate(int x)
                        {
                            return x % 2 == 1;
                        };
    var countOdd = intArray.Count(myDel);

    Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 4
}

③使用lambda表达式

“`C#
protected void btnlambda_Click(object sender, EventArgs e)
{
//使用lambda表达式
int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 };
var countOdd = intArray.Count(x => x % 2==1);//lambda表达式

Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 4

}
“`
PS:代码减少了!仅仅是这样么?

参考资料:C#4.0图解教程

这里顺便用B/S

ASP.NET
九九
过去的我们,现在的自己,往事,终会随风而逝。 View all posts by 九九 →

Post navigation

Older post
5段小代码理解JS核心,闭包和作用域
Newer post
用JS获取iframe提交后的数据

标签云

2019ncov Android ASP.NET Baby C# C/C++ CSS Div DX11 flask front-end GAE Git Java JJProject JS Life MSSQL MVC OpenSource Oracle Python React React-Native Software Tools Vue Webpack Website Window WP7 乱记 十年旧梦 天气 宝宝成长日记 小说 工作 情感 故障 散文 日记 网新实训笔记 花落梧桐 诗间集 转载

时光机

  • 2023年3月
  • 2023年2月
  • 2022年12月
  • 2022年4月
  • 2022年3月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年5月
  • 2019年12月
  • 2019年10月
  • 2019年9月
  • 2019年6月
  • 2019年5月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年7月
  • 2017年3月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年1月
  • 2012年11月
  • 2012年10月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年6月
  • 2010年5月
  • 2010年2月
  • 2010年1月
  • 2009年12月
  • 2009年11月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2009年5月
  • 2009年4月
  • 2009年3月
  • 2009年2月
  • 2009年1月
  • 2008年8月
  • 2008年6月
  • 2008年5月
  • 2008年4月
  • 2008年2月
  • 2007年11月
  • 2007年8月
  • 2007年6月
  • 2007年5月
  • 2007年4月
  • 2007年3月
  • 2007年2月
  • 2007年1月
  • 2006年10月
  • 2006年8月
© 2006 - 2023 久久日记本
Powered by WordPress | Theme: Graphy for 99diary