zoukankan      html  css  js  c++  java
  • lambda select和where区别

    本文用一个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:1userInfomation.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()});

  • 相关阅读:
    Winform中实现FTP客户端并定时扫描指定路径下文件上传到FTP服务端然后删除文件
    NodeRED简介与Windows上安装、启动和运行示例
    CentOS7中后台运行NodeRED(关闭窗口也能访问服务)
    CentOS7中使用PM2设置NodeRED开机自启动
    Windows上编译github源码方式运行NodeRED,以及离线迁移安装NodeRED
    升级npm
    FastAPI 学习之路(十八)表单与文件
    FastAPI 学习之路(十七)上传文件
    ArcGIS9.2新功能之File Geodatabase(对比PGDB) 【转】
    Catalog无法连接Server
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754621.html
Copyright © 2011-2022 走看看