Linq查询操作语句学习
对于一个集合,我们通常会用foreach或者for循环来判断查找里面的元素。
但这种方法通常会看起来比较复杂,我们可以使用linq。
Linq允许编写C#代码以查询数据库相同的方式操作内存数据(写法类似于SQL)
核心目标是让程序员关心What,而不是How,所以效率通常不及不用Linq的实现。
但Linq的代码非常易理解,并且可以写的非常简洁。
一般的,可以使用Select、Where、OrderBy、GroupBy条件表达式
有这么一个字符串数组:
string[] myTest = new string[] { "Lily", "Micky", "jack", "Amy", "jake", "tera","Yvan"};
var myTest1 = myTest.Select((name) => name.ToUpper()); //全部变为大写字母
--这里面的name可任取名字,表示一个参数
var myTest2 = myTest.Select((name) => name.ToUpper()).Where((name)=>name.Length > 4);//在上面基础上找到名字长度大于4的
var myTest3 = myTest.Select((name) => name).Where((name) => name.Length < 5).GroupBy((name => name.Substring(0, 1)));
//名字长度小于5的按照首字母分组 也可以按照首字母排序:前面省略+ .OrderBy((name=>name.Substring(0,1)
同时除了以上写法还有另外一种
int[] myNumTest = new int[] { 22, 11, 33, 55, 2, 111, 4, 33, 222, 55, 86, 31 };//数据都是随便乱输入的
var max = (from myitem in myNumTest where myitem % 2 != 0 select myitem).Max();//选出能被2整除且取出最大值
好了,下面来处理XML文档(这都是参照视频的)
这个是选取的百度API中获取周边银行返回的XML数据
<?xml version="1.0" encoding="UTF-8"?> <PlaceSearchResponse>
<status>0</status>
<message>ok</message>
<results>
<result name="a">
<name>交通银行ATM</name>
<location>
<lat>39.917437</lat>
<lng>116.403147</lng>
</location>
<address>北京市东城区东长安街天安门内</address>
<uid>7af671e39c0b6c1158f6be9f</uid>
</result>
<result>
<name>中国银行ATM</name>
<location>
<lat>39.912947</lat>
<lng>116.396089</lng>
</location>
<address>北京市西城区西长安街2号</address>
<uid>82cf55ea33c0f0eefbdc856b</uid>
</result>
<result>
<name>原麦加利银行</name>
<location>
<lat>39.908533</lat>
<lng>116.406818</lng>
</location>
<address>东交民巷39</address>
<uid>6cc9b6851fa53eb715c9057e</uid>
</result>
<result>
<name>大陆银行旧址</name>
<location>
<lat>39.908388</lat>
<lng>116.4017</lng>
</location>
<address>北京市西城区西交民巷17号</address>
<uid>d472daffc63327a3d72ce2da</uid>
</result>
<result>
<name>保商银行旧址</name>
<location>
<lat>39.908395</lat>
<lng>116.401315</lng>
</location>
<address>北京市西城区西交民巷17</address>
<uid>2fd2beabbcc4f12c7bdbd2af</uid>
</result>
<result>
<name>中央银行旧址</name>
<location>
<lat>39.908347</lat>
<lng>116.400848</lng>
</location>
<address>北京市西城区西交民巷17号</address>
<uid>b958cfb975ce24e36240a948</uid>
</result>
<result>
<name>中国银行ATM</name>
<location>
<lat>39.90836</lat>
<lng>116.400191</lng>
</location>
<address>北京市西城区西交民巷甲19号</address>
<uid>b4c84cd9c192007431169ba7</uid>
</result>
<result>
<name>北京农商银行ATM(东长安支行)</name>
<location>
<lat>39.913888</lat>
<lng>116.413451</lng>
</location>
<address>东长安街12</address>
<uid>bf29b702a92f9f9909b93ac9</uid>
</result>
<result>
<name>北京农商银行东长安支行</name>
<location>
<lat>39.913784</lat>
<lng>116.41346</lng>
</location>
<address>东长安街12号</address>
<telephone>(010)85229651</telephone>
<uid>cc788fde071b2f8a88fc06c9</uid>
</result>
</results>
</PlaceSearchResponse>
我们要先对照着XML自定义一个类,将内容解析到实例化的类中去。(Lat.Lng我直接分开来了,而不再定义一个类了)
public class PlaceIPO
{
public string Name { set; get; }
public string Lat { set; get; }
public string Lng { set; get; }
public string Address { set; get; }
public string Uid { set; get; }
}
PlaceIPO ipo = new PlaceIPO();//实例化
StorageFile xmlFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///XMLTest.xml")); //读取XML文件
string xmlString = await FileIO.ReadTextAsync(xmlFile);//XML文件变化字符串
XDocument xml = XDocument.Parse(xmlString);//将字符串转化为响应的XML文件
XElement root = xml.Element("PlaceSearchResponse");//获取根节点
var mySource = from item in root.Element("results").Elements("result")
where item.HasAttributes && item.Attribute("name").Value == "a"
select new PlaceIPO
{
Name = item.Element("name").Value,
Address = item.Element("address").Value,
Lat =item.Element("location").Element("lat").Value,
Lng = item.Element("location").Element("lng").Value,
Uid = item.Element("uid").Value
};
Listbox1.ItemsSource = mySource;
注意这里,我只给第一个交通银行赋值name="a"之后只是查找这一个数据。
要进行其他操作大家可以自己试试。
在储存数据里面也讲到了对xml和Json的序列化/反序列化,直接使用自带方法就行。
下一篇再写写。
Linq查询操作语句学习的更多相关文章
- Linq查询操作之排序操作
在Linq中排序操作可以按照一个或多个关键字对序列进行排序.其中第一个排序关键字为主要关键字,第二个排序关键字为次要关键字.Linq排序操作共包含以下5个基本的操作. 1.OrderBy操作,根据排序 ...
- Linq查询操作之投影操作
投影操作,乍一看不知道在说啥.那么什么是投影操作呢?其实就是Select操作,名字起的怪怪的.和Linq查询表达式中的select操作是一样的.它能够选择数据源中的元素,并指定元素的表现形式.投影操作 ...
- Linq查询操作之Where筛选
筛选操作where能够处理逻辑运算符组成的逻辑表达式.比如逻辑“与”,逻辑“或”,并从数据源中筛选数据,它和where子句的功能非常相似.Enumerable类的Where()原型如下: public ...
- C#3.0新增功能09 LINQ 基础04 基本 LINQ 查询操作
连载目录 [已更新最新开发文章,点击查看详细] 本篇介绍 LINQ 查询表达式和一些在查询中执行的典型操作. 获取数据源 在 LINQ 查询中,第一步是指定数据源. 和大多数编程语言相同,在使用 ...
- Linq查询操作之聚合操作(count,max,min,sum,average,aggregate,longcount)
在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等.Linq中包含7种操作,这7种操作被称作聚合操作. 1.Count操作,计算序列中元素的个数,或者计算满足一 ...
- mysql 的查询操作语句---自动生成各种不同的序号
1.通过查询语句添加自动生成序号 SELECT m.id,(@a :=@a + 1) AS a FROM 表名 m, (SELECT @a := 0) t1 2.MySQL字符串前后补0 前补0(LP ...
- Linq查询简介
查询是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据库的 SQL 和用于 XML 的 XQuery. 因此, ...
- C#3.0新增功能09 LINQ 基础02 LINQ 查询简介
连载目录 [已更新最新开发文章,点击查看详细] 查询 是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据 ...
- .NET LINQ查询操作中的类型关系
LINQ 查询操作中的类型关系 若要有效编写查询,您应该了解完整的查询操作中的变量类型是如何全部彼此关联的. 如果您了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例. 另外 ...
随机推荐
- PHP数组/Hash表的实现/操作、PHP变量内核实现、PHP常量内核实现 - [ PHP内核学习 ]
catalogue . PHP Hash表 . PHP数组定义 . PHP变量实现 . PHP常量实现 1. PHP Hash表 0x1: 基本概念 哈希表在实践中使用的非常广泛,例如编译器通常会维护 ...
- sql like
在java里面写sql要用 like CONCAT('%',?,'%')
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 1 Estimating unknown parameters
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- linux 驱动入门4
不吃苦中苦,难为人上人.努力,给老婆孩子提供个良好的生活居住环境.http://www.cnblogs.com/nan-jing/articles/5806399.html上文提到了如何创建proc节 ...
- oneM2M标准发展神速 实现万物联网的愿景
http://m2m.iot-online.com/news/2013102224849.html oneM2M则将负责解决独立于接取网路中通用的M2M服务层的关键需求:使其可更方便地嵌入于各种软硬体 ...
- gnuplot配置HOME目录
http://blog.csdn.net/jspenliany/article/details/39828261 本人使用gnuplot绘图,使用console version的来进行处理的时候,经常 ...
- Knockoutjs快速入门(经典)
Knockoutjs是一个JavaScript实现的MVVM框架.主要有如下几个功能: 1. Declarative bindings 2. Observables and dependency tr ...
- (翻译)如何对python dict 类型按键(keys)或值(values)排序
如何对dict类型按键(keys)排序(Python 2.4 或更高版本): mydict = {'carl':40, 'alan':2, 'bob':1, 'danny':3} for key in ...
- SQL Server 2012 学习笔记1
1. 新建的数据库会产生两个文件(数据文件.mdf 和日志文件.ldf) 2. 编辑表格和为表格录入数据 "Design"为设计表格,"Edit Top 200 Rows ...
- 爬虫3 html解析器 html_parser.py
#coding:utf8 import urlparse from bs4 import BeautifulSoup import re __author__ = 'wang' class HtmlP ...