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 示例和代码示例. 另外 ...
随机推荐
- 贴一段shell代码
好久没用shell了,呵呵,这个是当counter < 1000的时候,往tmp.sql里填这两个字符串,生成假数据. #!/usr/bin/env bash COUNTER= ]; do ec ...
- LaTeX test
\begin{equation} x^2+1=2 \end{equation} \begin{equation} x^2+y=3 \end{equation} $\dfrac{2\pi}{N}$
- PHPstorm激活
最近想学习一下PHP 于是下载了很不错的phpstorm 但这老外的工具是要购买正版的 所以就搜了一下破解激活的教程 发现现在网上的在线破解在2016.2版本里面大多已被封杀 尝试了本地破解也发现大 ...
- javascript undefined 和void0
underfine === void 0 并不完全成立 undefined不是关键字 不是保留字 在IE低版本下可以被赋值 所以代码中一般以void 0 代替undefined
- GMap.NET使用一
https://greatmaps.codeplex.com/releases/view/20235 从上面网站下载需要的组件dll,也可以下载源码研究,解压后有两个文件夹,如图1所示,根据不同的fr ...
- lunix的查看Tomcat目录下日志的快速操作
可以使用cd命令,cd命令的功能是切换到指定的目录: 命令格式:cd [目录名] 有几个符号作为目录名有特殊的含义: "/"代表根目录. ".."代表上一级目录 ...
- HTML meta viewport属性详细说明
viewport并非只是ios上的独有属性,在android.winphone上同样也有viewport,下面为大家详细介绍下HTML meta viewport 什么是Viewport 手机浏览器是 ...
- SQL Server 2012 启动
1. 启动 SQL Server Management studio 2. 选择登录模式 Server name: "." 代表本地的数据库 Authertication: ...
- 图片上传利用<iframe></iframe>标签实现无刷新上传图片
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- beautifulsoup测试
import re from bs4 import BeautifulSoup html_doc = """ <html><head><ti ...