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 示例和代码示例. 另外 ...
随机推荐
- ubuntu 设置 NAT 转发
针对需求: 嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬. 最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP ...
- python json.dumps() json.dump()的区别
以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成s ...
- Alpha版本十天冲刺——Day 8
站立式会议 会议总结 队员 今天完成 遇到的问题 明天要做 感想 鲍亮 无 同时发送图片和其它字段信息(string)到服务器,找不到好方法实现 完成发帖接口 心累,写好了一个传送文件的接口,但是后端 ...
- PHPExcel使用体会
PHPExcel使用体会 因为毕设导师智能分配系统的需要,系负责人在管理学生和导师时,希望可以使用Excel批量导入学生和导师的信息,学长的报课系统使用的是PHPExcel的类库,于是我也抽空花了2天 ...
- HTML5学习总结-10 Android 控件WebView显示网页
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient 1)setWebClient: ...
- java编程思想-java中的并发(三)
三.终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态.此时,他已经分配了必须的系统资源,并执行了初始化.此刻线程 ...
- BZOJ4668: 冷战
并查集,按秩合并,树高log,暴力查询. 果然bzoj新挂的题中过的人多的全是sb题. 写了一发秒WA,发现姿势不对.(@_@) 然后过了50min,开始怀疑人生.(*_*) 这么长时间我lct都写完 ...
- ASP------<input type="file"/>上传文件
界面代码(注意:runat="Server"和input file中name一定要有) <html xmlns="http://www.w3.org/1999/xh ...
- Java之强引用、 软引用、 弱引用、虚引用
1.强引用 平时我们编程的时候例如:Object object=new Object();那object就是一个强引用了.如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它. ...
- angularjs笔记(三)
AngularJS API 7.其他一些常用指令,布尔类型的指令也可以用表达式 (1).数组索引$index <!DOCTYPE html> <html> <head&g ...