对于一个集合,我们通常会用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. HDU 1285 确定比赛名次(简单拓扑排序)

    题目链接: 传送门 确定比赛名次 Time Limit: 1000MS     Memory Limit: 65536K Description 有N个比赛队(1 Input 输入有若干组,每组中的第 ...

  2. [Android]Volley源码分析(二)

    上一篇介绍了Volley的使用,主要接触了Request与RequestQueue这两个类,这篇就来了解一下这两个类的具体实现. Request类图:

  3. CSS--值和单位

    等价颜色表 什么叫Web安全色 所谓的“web安全”颜色是指在256色计算机系统上总能避免抖动的颜色. Web安全颜色可以表示为RGB值为20%和51(相应的十六进制值为33)的倍数. 如果使用RGB ...

  4. UVA1210Sum of Consecutive Prime Numbers(素数打表 + 连续和)

    题目链接 题意:输入一个数n (2 <= n <= 10000) 有多少种方案可以把n写成若干个连续素数之和 打出10000之内的素数表,然后再打出每个可能得到的和的方案数的表 #incl ...

  5. JQuery------动态添加的元素on方法不起作用解决方法

    转载: http://www.jb51.net/article/70342.htm

  6. Linux 的cp命令详解

    功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文件或目录, ...

  7. Win10微软官方最终正式版ISO镜像文件

    Win10微软官方最终正式版ISO镜像文件 据说Windows 10是微软发布的最后一个Windows版本,下一代Windows将作为Update形式出现.Windows 10将发布7个发行版本,分别 ...

  8. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET

    http://hi.baidu.com/%B1%D5%C4%BF%B3%C9%B7%F0/blog/item/e7284ef16bcec3c70a46e05e.html select函数用于在非阻塞中 ...

  9. Runner站立会议03

    开会时间:21.10~21.30 地点:二教103 今天做了什么:Android的存储,只是存储在/date/date 文件夹下和sd卡 明天准备做什么:学习Android的数据库的使用sqlite ...

  10. Java对象的多态性(转型)

    多态性在面向对象中主要有两种体现: <1>方法的重载与覆写 <2>对象的多态性 对象的多态性:向上转型:子类对象-->父类对象,向上转型会自动完成 向下转型:父类对象-- ...