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 = "orlando0@adventure-works.com"},
new Customer { FirstName = "Keith", LastName = "Harris",HomeAddress = "keith0@adventure-works.com" },
new Customer { FirstName = "Donna", LastName = "Carreras",HomeAddress = "donna0@adventure-works.com" },
new Customer { FirstName = "Janet", LastName = "Gates",HomeAddress = "janet1@adventure-works.com" },
new Customer { FirstName = "Lucy", LastName = "Harrington",HomeAddress = "lucy0@adventure-works.com" }
};
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>orlando0@adventure-works.com</emailAddress></customer>
<customer>
<firstName>Keith</firstName>
<lastName>Harris</lastName>
<emailAddress>keith0@adventure-works.com</emailAddress></customer>
<customer>
<firstName>Donna</firstName>
<lastName>Carreras</lastName>
<emailAddress>donna0@adventure-works.com</emailAddress>
</customer>
<customer>
<firstName>Janet</firstName>
<lastName>Gates</lastName>
<emailAddress>janet1@adventure-works.com</emailAddress></customer>
<customer>
<firstName>Lucy</firstName>
<lastName>Harrington</lastName>
<emailAddress>lucy0@adventure-works.com</emailAddress></customer></customers>
这里的XmlElement firstElm = customerXml.CreateElement("firstName");语句是定义firstElm标签,这在html中是不行的
而xml的产生需要用到System.Xml.linq;命名空间。
C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成的更多相关文章
- LINQ to SQL语句非常详细(原文来自于网络)
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
- 【转】LINQ to SQL语句(1)之Where
Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形 ...
- Entity Framework学习笔记(四)----Linq查询(1)
请注明转载地址:http://www.cnblogs.com/arhat 从本章开始,老魏就介绍一下Entity Framework使用Linq来查询数据,也就是Linq To Entity.其实在E ...
- LINQ简介和LINQ to SQL语句之Where
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...
- 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!
算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...
- LINQ to SQL语句(7)之Exists/In/Any/All/Contains
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...
- 年终巨献 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employ ...
- SQL、Linq、lamda表达式 同一功能不同写法
一.SQL.Linq.lamda表达式 同一功能不同写法 SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employe ...
随机推荐
- 字符串聚合技术(String Aggregation Techniques)
from: http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php String Aggregation ...
- 解决Qt4.8.6+VS2010运行程序提示 FTH: (6512): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes
这个问题偶尔碰到两次,现在又遇上了,解决办法如下: 打开注册表,设置HKLM\Software\Microsoft\FTH\Enabled 为0 打开CMD,运行Rundll32.exe fthsvc ...
- Android Intent传递数据
刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...
- SharePreferences类的使用
简述:以key-value键值对的方式将数据保存到Android自身定义的文件夹(/data/data/<package name>/shared_prefs root才可见的文件夹)中 ...
- BASH 进阶(转载防丢)
基础 学习 Bash 的基础知识.具体来说,输入 man bash 并至少全文浏览一遍; 它很简单并且不长.其他的 shell 可能很好用,但 Bash 功能强大且几乎所有情况下都是可用的 ( 只学习 ...
- service:jmx:rmi:///jndi/rmi
service:jmx:rmi:///jndi/rmi://ip:9889/jmxrmi http://stackoverflow.com/questions/2768087/explain-jmx- ...
- 用 Python脚本生成 Android SALT 扰码
发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行) #!/usr/bin/python # F ...
- C语言的本质(1)——计算机与二进制
人类的计数方式通常是"逢十进一",称为十进制(Decimal),大概因为人有十个手指,所以十进制是最自然的计数方式,各民族的文字中都有十个数字,而阿拉伯数字0-9是目前最广泛采用的 ...
- 关于css中使用ul li的一些体会
参考网址:http://hi.baidu.com/july_leo/item/5237cd612070ae2668105b40 如何修改ul li的显示 ----------------------- ...
- AndroidUI 视图动画-旋转动画效果 (RotateAnimation)
RotateAnimation,能实现Android的视图的旋转效果,废话不多说直接上代码. 新建一个Android 项目,在activity_main.xml中添加一个按钮,然后使用Relative ...