对于一个集合,我们通常会用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查询操作语句学习的更多相关文章

  1. Linq查询操作之排序操作

    在Linq中排序操作可以按照一个或多个关键字对序列进行排序.其中第一个排序关键字为主要关键字,第二个排序关键字为次要关键字.Linq排序操作共包含以下5个基本的操作. 1.OrderBy操作,根据排序 ...

  2. Linq查询操作之投影操作

    投影操作,乍一看不知道在说啥.那么什么是投影操作呢?其实就是Select操作,名字起的怪怪的.和Linq查询表达式中的select操作是一样的.它能够选择数据源中的元素,并指定元素的表现形式.投影操作 ...

  3. Linq查询操作之Where筛选

    筛选操作where能够处理逻辑运算符组成的逻辑表达式.比如逻辑“与”,逻辑“或”,并从数据源中筛选数据,它和where子句的功能非常相似.Enumerable类的Where()原型如下: public ...

  4. C#3.0新增功能09 LINQ 基础04 基本 LINQ 查询操作

    连载目录    [已更新最新开发文章,点击查看详细] 本篇介绍 LINQ 查询表达式和一些在查询中执行的典型操作. 获取数据源 在 LINQ 查询中,第一步是指定数据源. 和大多数编程语言相同,在使用 ...

  5. Linq查询操作之聚合操作(count,max,min,sum,average,aggregate,longcount)

    在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等.Linq中包含7种操作,这7种操作被称作聚合操作. 1.Count操作,计算序列中元素的个数,或者计算满足一 ...

  6. mysql 的查询操作语句---自动生成各种不同的序号

    1.通过查询语句添加自动生成序号 SELECT m.id,(@a :=@a + 1) AS a FROM 表名 m, (SELECT @a := 0) t1 2.MySQL字符串前后补0 前补0(LP ...

  7. Linq查询简介

    查询是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据库的 SQL 和用于 XML 的 XQuery. 因此, ...

  8. C#3.0新增功能09 LINQ 基础02 LINQ 查询简介

    连载目录    [已更新最新开发文章,点击查看详细] 查询 是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据 ...

  9. .NET LINQ查询操作中的类型关系

    LINQ 查询操作中的类型关系      若要有效编写查询,您应该了解完整的查询操作中的变量类型是如何全部彼此关联的. 如果您了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例. 另外 ...

随机推荐

  1. EF-CodeFirst-1 玩起来

    注本文是学习旺杰兄的CodeFirst系列所写 CodeFirst CodeFirst是一种全新的玩法,代码先行使得我们更了解实体之间的关系.而且更加符合了DDD领域驱动设计的思想 .所以CodeFi ...

  2. 详解使用icomoon生成字体图标的方法并应用

    原文:http://blog.csdn.net/u013938465/article/details/50680468 最近项目大量用到字体图标,大家也知道,字体图标任意缩放不会失真,也大大减少请求数 ...

  3. EF 知识点

    EntityFrameWorak知识点记录 发展史 EF1.0时,只支持Database First,数据库优先.必须将设计器指向一个现有的数据库. EF4时,支持Model First,模型优先.可 ...

  4. CF 268E Playlist(贪心)

    题目链接: 传送门 Playlist time limit per test:1 second     memory limit per test:256 megabytes Description ...

  5. 【Alpha阶段】第五次Scrum例会

    由于软工整个项目规划延期1周,我们将停止2天的Scrum,进行相应的修整 会议信息 时间:2016.10.21 22:30 时长:20min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 个 ...

  6. iOS - CABasicAnimation

    代码实例: [1] - (void)pulseClick { //!> 宽和高等比例转换 CABasicAnimation * pulse = [CABasicAnimation animati ...

  7. IAR Usage

    ctrl+shift+f: 全局搜索

  8. Saltstack异步执行命令(十三)

    Saltstack异步执行命令 salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功.因此,salt提供异步执行的功能,发出命令后立即 ...

  9. BZOJ2286: [Sdoi2011]消耗战

    建出虚树dp. 把询问点按dfs序排序,用一个以dfs序为关键字的单调栈(以深度为关键字也是一样的),每次将一个询问点与栈顶的点的lca入栈,再将这个询问点入栈,在这个过程中建出一棵树就是虚树.具体看 ...

  10. mysql数据库中标的key的含义

    四种Key: Primary Key, Unique Key, Key 和 Foreign Key. 1.如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非 ...