C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成

LINQ是一种集成在计算机语言里的信息查询语句,是c#3.0中最惹人瞩目的功能。

在C#中,LINQ语句有两种写法。

第一种写法与SQL语句类似:

IEnumerable<Customer> result =  from   customer in customers
      where  customer.FirstName == "Donna“
      select customer;

第二种写法更加接近c#语句:

IEnumerable<Customer> result =
    customers.Where(customer => customer.FirstName == "Donna")
    .Select(customer => customer);

这种写法易于理解,所以我认为这种写法更加好。

在Where和Select后面填入的是Lamda语句,这种语句是Delegate的简化,有利于提升代码的阅读性。

Lamda表达式的形式通常是这样的

people=>people.age>30

第一个people指的是传入的参数, =>是Lamda表达式的特定符号,右边是一个表达式,在查询语句中,此符号后面的表达式返回值通常是布尔类型的。例如上面这条语句放在Where中可以筛选出年龄大于三十的人。

下面是一个简单的LINQ和Lambda表达式的运用

customer类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string HomeAddress { get; set; }
        //now override the ToString function of Object class.
        public override string ToString()
        {
            return string.Format("{0} {1}\n Enmail:{2}", FirstName, LastName, HomeAddress);
        }
        public static List<Customer> CreateCustomerList()
        {
            List<Customer> customers = new List<Customer>
            {
                 new Customer { FirstName = "Orlando",LastName = "Gee", HomeAddress = "[email protected]"},
                 new Customer { FirstName = "Keith", LastName = "Harris",HomeAddress = "[email protected]" },
                 new Customer { FirstName = "Donna", LastName = "Carreras",HomeAddress = "[email protected]" },
                 new Customer { FirstName = "Janet", LastName = "Gates",HomeAddress = "[email protected]" },
                 new Customer { FirstName = "Lucy", LastName = "Harrington",HomeAddress = "[email protected]" }
            };
            return customers;
        }
    }
}

在main函数中查询以D开头的记录

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        public static void Main()
        {
            List<Customer> customers = Customer.CreateCustomerList();
            IEnumerable<Customer> result =
                customers.Where(customer => customer.FirstName.StartsWith("D"));
            foreach (Customer customer in result)
            {
                Console.WriteLine(customer.ToString());
            }
        }
    }
}

关于Xml我用上一个数据库简单的创建了一个xml文档

 public static void Main()
        {
            List<Customer> customers = Customer.CreateCustomerList();
            XmlDocument customerXml = new XmlDocument();
            XmlElement rootElem = customerXml.CreateElement("customers");
            customerXml.AppendChild(rootElem);
            foreach (Customer cust in customers) {
                XmlElement customerElm = customerXml.CreateElement("customer");

                XmlElement firstElm = customerXml.CreateElement("firstName");
                firstElm.InnerText = cust.FirstName;
                customerXml.AppendChild(firstElm);

                XmlElement second = customerXml.CreateElement("lastName");
                second.InnerText = cust.LastName;
                customerXml.AppendChild(second);

                XmlElement third = customerXml.CreateElement("emailAddress");
                third.InnerText = cust.Address;
                customerXml.AppendChild(third);

                rootElem.AppendChild(customerElm);
            }
            Console.WriteLine(customerXml.OuterXml);
        }

运行结果是这样的

<customers>
<customer>
<firstName>Orlando</firstName>
<lastName>Gee</lastName>
<emailAddress>[email protected]</emailAddress></customer>
<customer>
<firstName>Keith</firstName>
<lastName>Harris</lastName>
<emailAddress>[email protected]</emailAddress></customer>
<customer>
<firstName>Donna</firstName>
<lastName>Carreras</lastName>
<emailAddress>[email protected]</emailAddress>
</customer>
<customer>
<firstName>Janet</firstName>
<lastName>Gates</lastName>
<emailAddress>[email protected]</emailAddress></customer>
<customer>
<firstName>Lucy</firstName>
<lastName>Harrington</lastName>
<emailAddress>[email protected]</emailAddress></customer></customers>

这里的XmlElement firstElm = customerXml.CreateElement("firstName");语句是定义firstElm标签,这在html中是不行的

而xml的产生需要用到System.Xml.linq;命名空间。

时间: 2024-10-11 09:28:10

C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成的相关文章

LINQ to SQL语句(1)之Where(抄的好)

Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选1994 年或之后雇用的雇员:

LINQ to SQL语句非常详细(原文来自于网络)

LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

winform学习日志(二十四)----------datetime和timer的使用(小小幻灯片)

一:展示图片 每秒换一次图片,一共六十张图片,00-59 二:代码 a,设计代码 namespace timePicture { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary

winform学习日志(二十八)----------将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressio

winform学习日志(二十六)----------控件treeview使用

一:实现功能,获得选中节点,在选中节点下添加节点,折叠,展开,删除,得到选中节点下checked项,选中根节点其下节点也选中,图标.上图 二:相关代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo

coupon学习日志

一.前言 1.现在研究一个app的web后台维护系统,使用的框架是struts2和一个封装的jdbc框架(这个功能类似hibernate,后续慢慢研究下源码): 2.之前一直使用eclipse做项目,现在转手用intellij idea,方便,人性化,功能多,用起来爽;感觉开始学习使用用eclipse,之后转intellij idea比较好;因为公司大多数都是用eclipse,有利于沟通吧; 二.项目笔记 研究log输出 1.项目部署tomcat: 项目加载struts2相关配置; 2.点击登录

LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg

上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ to SQL.LINQ to Entities.LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所有的数据都要在数据库运行着各种操作.所以先来学习LINQ to SQL,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常用.

winform学习日志(三十)----------从字符串总分离文件路径、命名、扩展名,Substring(),LastIndexOf()的使用;替换某一类字符串,Replace()的用法

一:从字符串总分离文件路径.命名.扩展名,上图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace FilePathString { public par