本文用一个linq to xml语法作为示例,以下是用来操作的xml:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--This is a comment.Just input what you want to say.-->
<UsersInfomation>
  <User ID="1">
    <Name>Alex</Name>
    <Hometown>HRB</Hometown>
    <Age>22</Age>
  </User>
  <User ID="2">
    <Name>Fu</Name>
    <Hometown>SY</Hometown>
    <Age>27</Age>
  </User>
  <User ID="3">
    <Name>Abe</Name>
    <Hometown>HRB</Hometown>
    <Age>24</Age>
  </User>
</UsersInfomation>

在一个输出台控制程序中加载xml,并调用方法:
XElement xd = XElement.Load(@"D:\1\userInfomation.xml");
GetHometown(xd);
Console.WriteLine();

//统计hometown为HRB的人数
private static void GetHometown(XElement xe)
{
    //Select用于选择输出(不能作为筛选条件),比如:.Select(s=>s)将输出一个实体;.Select(s=>s.Value)将输出值;
    //而下面的代码将输出的是bool类型:
    var hometown = xe.Descendants("Hometown").Select(s => s.Value == "HRB");
    //输出为:


//可以看出,输出的行数是全部行,只是输出的内容是bool,这是由Select子句决定的。

//Where扩展方法才是用来进行条件筛选(虽然它返回的也是bool值,但作用和Select不一样)
    //等同于:var hometown = xe.Descendants("Hometown").Where(s => s.Value == "HRB").Select(s => s);
    var hometown = xe.Descendants("Hometown").Where(s => s.Value == "HRB");
    //输出为:


//可以看出,输出了符合条件的行。

//查询语法(等同于上一句)
    //var hometown = from h in xe.Descendants("Hometown")
    //               where h.Value == "HRB"
    //               select h;

int count = 0;
    foreach (var h in hometown)
    {
        Console.WriteLine(h);
        count++;
    }
    Console.WriteLine("==============>"+count);
}

------------------------------ Select用法续 《Pro ASP.NET MVC 3 Framework》p529---------------------
作用:
1、用来过滤要显示的字段
2、定义字段要显示的样式
如:
var formattedData=data.Select(m=>new { ClientName=m.ClientName,Date=m.Date.ToShortDateString()});

lambda select和where区别的更多相关文章

  1. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  2. 通过set赋值,与select赋值的区别

    ---通过set赋值,与select赋值的区别.declare @a int--set @a=(select count(*) from TblStudent)select @a=count(*) f ...

  3. select和epoll区别

    select.epoll 区别总结: 1.支持一个进程所能打开的最大连接数 select 单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是 ...

  4. SQL中SET和SELECT赋值的区别

    最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果. 那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢? 经过网上的查询,及个人练习,总结两者有以下几点主要 ...

  5. sql 、linq、lambda 查询语句的区别

    LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...

  6. [转载] Linux下多路复用IO接口 epoll select poll 的区别

    原地址:http://bbs.linuxpk.com/thread-43628-1-1.html 废话不多说,一下是本人学习nginx 的时候总结的一些资料,比较乱,但看完后细细揣摩一下应该就弄明白区 ...

  7. 我觉得epoll和select最大的区别

    最近在用epoll,网速资料很多,大家都说epoll和select的区别比较大,而且select要不停遍历所有的fd,效率要低,而且fd有限制. 但是我认为二者最大的区别在于 先看代码 while ( ...

  8. Ext4.2 select 和 query 区别与联系

    Ext.query和Ext.select的作用是一致的,同是根据CSS选择符查找出一个或多个元素.区别在于返回类型上.分别是:query方法返回的是JavaScript标准的数组类型:select方法 ...

  9. Ruby Proc 和 lambda的共同点和区别

    Proc 和 lambda 的目的是把block {....} 变成类似方法一样的对象,使其不需要重复编写同样的block. Proc 和 lambda 的共同点: 语法类似Proc.new{|n| ...

随机推荐

  1. [C#]加密解密 MD5、AES

    /// <summary> /// MD5函数 /// </summary> /// <param name="str">原始字符串</p ...

  2. String,StringBuilder 和StringBuffer区别

    1. String 和字符串缓冲区的区别是: String 是一个不可变的字符序列 , 而字符串缓冲区是可变的 2. StringBuffer 是一个线程安全的可变字符序列 ; 线程安全对应的效率低 ...

  3. Tomcat重启Shell脚本

    --测试通过 vim restart_tomcat.sh#!/bin/bash# Filename: restart_tomcat.sh# Description: Restart tomcat# D ...

  4. Qt使用boost库

    1.在官网下载boost库 boost_1_70_0.zip 2.将你的Qt的工具目录(有gcc.exe)设置环境变量.(比如F:\Qt592\Tools\mingw530_32\bin) 3.在命令 ...

  5. jq删除标签

    <script>$(function(){ $("div").remove()})</script>

  6. Yarn简单介绍及内存配置

    本文出自:http://blog.chinaunix.net/uid/28311809/abstract/1.html 在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Y ...

  7. python 高阶函数、柯里化

    高阶函数 First Class Object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量.参数.返回值等等 高阶函数 数学概念 y=g(f(x)) 在数学和计算机 ...

  8. html的css背景图的repeat

    HTML里background-image中,可以设置background-repeat实现平铺,前面博文中关于css样式换行的(相关博文:超文本css样式换行),其中有个三个div组合的,中间的di ...

  9. iOS- Core Foundation对象与OC对象相对转换

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...

  10. Python(1)自动发送邮件

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...