LINQ

  LINQ的全称是Language INtegrated Query,即语言集成查询。LINQ是一种查询语言,不仅可以对数字库进行查询,还可以对.net的数据集、数组、Xml文档等对象进行查询,并支持对这些数据源对象进行查询后的排序、分组、和结构化等常见的查询操作。

  LINQ位于using System.Xml.Linq命名空间下。using System.Xml.Linq命名空间需要协同using System.Xml才能完成Linq to Xml的引用。

  使用LINQ时需要引入using System.Xml.Linq和using System.Xml命名空间。

  LINQ的查询操作通常由以下3个不同的操作组成。

    (1)获取数据源

    (2)创建查询

    (3)执行查询

  例如下面的代码:

 sting[] a={"one","two","three","four"};
var result=
from str in a
where str.length==
select str;
foreach(var str in result)
{
Console.Write(str);
}

  查询分为两种:
    一种是延迟执行,在定义完成查询变量后,实际的查询执行会延迟到在foreach语句中循环访问查询变量时发生。
    另一种是强制立即执行,对一系列源元素执行聚合函数的查询必须首先访问这些元素。

  LINQ到SQL的使用主要可以分为两大步骤:
    1.创建对象模型
    2.使用对象模型
    使用对象模型的典型步骤:
    (1)创建查询以从数据库中检索信息
    (2)重写Insert、Update、和Delete的默认行为
    (3)设置适当的选项以检测和报告并发冲突
    (4)建立继承层次结构
    (5)提供合适的用户界面
    (6)调试并测试应用程序

  如下例,显示小于 5的数
  主要实现代码:

    MainPage.xaml

  <Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,10,24,-10">
<StackPanel Name="Showsp" Height="508" HorizontalAlignment="Left" VerticalAlignment="Top"Width="438" Margin="8,0,0,0">
</StackPanel>
<Button Name="SButton" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="164,513,0,0" Content="显示小于5的数" Click="SButton_Click_1" />
</Grid>

    MainPage.cs

 private void SButton_Click_1(object sender, RoutedEventArgs e)
{
int[] number = new int[]{ ,,,,,,};
var numQuery =
from num in number
where num <
select num;
foreach (int num in numQuery)
{
TextBlock tex=new TextBlock();
tex.Text = num.ToString ();
tex.Margin=new Thickness(,,,);
this.Showsp.Children.Add(tex);
}
}

使用XML

  windows phoen提供了两种XML解释方式:一种是XmlReader类,一种是使用LINQ to XML。XmlReader适合读取较大的XML,数据较少的或者需要使用缓存技术的可以使用LINQ to XML。
  XmlReader类位于System.Xml命名空间下,使用时需要引用命名空间。
  XmlReader解释数据时只能以顺序的方式从上往下进行读取。XmlReader能够从Stream、TextReader、独立存储空间应用程序包中读取XML数据,然后使用          XmlReader.Create方法创建XmlReader.阅读器,就可以使用Read方法对XML进行读取和解释了。

WebClient

  WebClient类能够完成本地数据上传和远程数据下载。使用WebClient进行上传或下载数据时是以异步方式进的。
  一般过程是首先提供一个资源Url,实例化上传或下载请求、监事上传或下载进度、上传或下载完成后要处理的操作。换句话说WebClient使用事件来处理上传或下载完成时逻辑操作,使用方法来完成数据的上传或下载。

  UploadStringAsync(Uri, String)方法,将指定的字符串上载到指定的资源。此方法不会阻止调用线程。  public void UploadStringAsync(Uri address,string data):此方法将字符串发送到资源。该字符串是使用从线程池自动分配的线程资源异步发送的。在上载字符串之前,此方法使用 Encoding 属性中指定的编码方法将该字符串转换为 Byte 数组。若要在字符串的上载完成时收到通知,可以为 UploadStringCompleted 事件添加事件处理程序。
可以使用 CancelAsync 方法取消尚未完成的异步操作。

  
  DownloadStringAsync(Uri)方法 ,以字符串形式下载位于指定 Uri 的资源。public void DownloadStringAsync(Uri address):资源是异步下载的。当下载完成时,将引发 DownloadStringCompleted 事件。已下载的字符串在 DownloadStringCompletedEventArgs 的 Result 属性中提供。在完成第一个字符串下载操作前,不能对同一 WebClient 对象再次调用 DownloadStringAsync 方法。执行此操作会导致异常。
  可以使用 CancelAsync 方法取消尚未完成的异步操作。

  OpenWriteAsync(Uri)方法,打开一个流以将数据写入指定的资源。此方法不会阻止调用线程。public void OpenWriteAsync(Uri address,string method)

  OpenReadAsync(Uri)方法,打开流向指定资源的可读流。public void OpenReadAsync(Uri address) 在完成第一个下载操作前,不能对同一 WebClient 对象再次调用 OpenReadAsync 方法。执行此操作会导致异常。

  
  WebClient常见的处理事件如下:
    1.DownloadProgressChanged:监视下载进度。
    2.DownloadStringCompleted:下载字符串数据完成时触发。
    3.UploadProgressChanged:监视上传进度。
    4.UploadStringCompleted:上传字符串完成时触发。
    5.OpenReadCompleted:读取包资源时触发。
    6.OpenWriteCompleted:写入包资源时触发。

  实例如下:
    下载一个远程的XML文件该文件定义了两张图片,然后将图片显示出来
    主要代码如下:
      MainPage.xaml

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Height="421" HorizontalAlignment="Left" Margin="33,22,0,0" Name="ShowImg" VerticalAlignment="Top" Width="406" />
<Button Content="下载图片" Height="68" HorizontalAlignment="Left"Margin="105,478,0,0" Name="button1"VerticalAlignment="Top" Width="233" Click="button1_Click" />
</Grid>

      MainPage.xaml.cs

 private void button1_Click(object sender, RoutedEventArgs e)
{
//声明xml地址
Uri xmlurl = new Uri("http://xml/1.xml",UriKind.RelativeOrAbsolute);
//声明webclient对像
WebClient client = new WebClient();
//DownloadStringAsync进行异步下载
client.DownloadStringAsync(xmlurl);
//下载后触发读取事件
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
} void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
//XmlReader创建XML解释器
XmlReader xreadr = XmlReader.Create(new StringReader(e.Result.ToString()));
//使用XDocument处理XML
XDocument xdoc = XDocument.Load(xreadr);
//使用LINQ解释XML
List<Uri> imgesuri = (
from image in xdoc.Descendants("image")//在"image"节点下查找
select new Uri(image.Attribute("address").Value,
UriKind.RelativeOrAbsolute)//在image节点查找address,并生成Uri类型数据
).ToList();//最后转换成序列化数据 //执行LINQ
foreach (Uri uri in imgesuri)
{
//创建一个图片
Image img = new Image();
img.Width = ;
img.Height=;
img.Source = new BitmapImage(uri);//指定其地址
this.ShowImg.Children.Add(img);//为显示控件添加UI元素
}
}

windows phone数据网络开发的更多相关文章

  1. windows phone 网络开发三部曲(一)各种包的各种抓法

    首先感谢大家对我上一篇博客的支持,让我也体验了一把上榜的感觉. 这无疑是对我这个刚刚打算,认真写写博客的人的莫大的鼓励,再次感谢(鞠躬)!! 接下来想和大家分享一些关于windows phone网络开 ...

  2. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  3. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据

    原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...

  4. 《深入浅出Windows 10通用应用开发》

        <深入浅出Windows 10通用应用开发>采用Windows 10的SDK进行重新改版,整合了<深入浅出Windows Phone 8.1应用开发>和<深入解析 ...

  5. 通过基于 Linux 的软件 VPN 设备连接到 Windows Azure 虚拟网络

    摘要 本文章将说明如何通过使用软件 VPN 设备,将本地办公室或站点连接到 Windows Azure 虚拟网络.在构建原型或在构建可以尽快利用云的"开发/测试"工作流时,软件VP ...

  6. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

    原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述 第9部分:Windows Phone 8模拟器概述 原文地址: http://channel9.ms ...

  7. Windows Phone 8初学者开发—第20部分:录制Wav音频文件

    原文 Windows Phone 8初学者开发—第20部分:录制Wav音频文件 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Develop ...

  8. windows phone 8.1开发:socket通信聊天

    本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...

  9. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

随机推荐

  1. https webservice通讯 参考网址 http://blog.csdn.net/small____fish/article/details/8214938

    一.生成密钥库和证书可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意. 1.生成服务器证书库keyto ...

  2. Luogu 2951 捉迷藏Hide and Seek

    P2951 [USACO09OPEN]捉迷藏Hide and Seek 题目描述 Bessie is playing hide and seek (a game in which a number o ...

  3. CF51F Caterpillar (边双+树形DP)

    题目传送门 题目大意:给你一张n个点m条边的图.每次操作可以把两个点合并成一个(与之相连的边也都要连到新点上).求把图中每个联通块都变成“毛毛虫”的最小操作次数.“毛毛虫”必须是一棵树(可以存在自环) ...

  4. CentOS 7.2安装配置Vsftp服务器

    一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.2默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  5. 解决git pull每次提示输入账号密码的问题

    每次用git同步代码的时候,都会提示输入账号密码,很麻烦,费时间,所以找了一种可以免去每次都要输入账号密码的方法 1. git bash进入你的项目目录 2. 输入以下命令会在配置文件里添加信息,作用 ...

  6. JavaScript初步学习----基本使用,简单事件,修改样式,数据类型

    JavaScript基本使用 JavaScript原名叫livescript,是一门动态类型,弱类型基于原型的脚本语言   用于页面特效,前后交替,后台开发(node)   JavaScript写在s ...

  7. 华为/H3C Syslog配置

    H3C交换机的设置举例1. 组网需求将系统的日志信息发送到 linux 日志主机:日志主机的IP 地址为1.2.0.1/16:信息级别高于等于 informational 的日志信息将会发送到日志主机 ...

  8. 51Nod——T 1113 矩阵快速幂

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 ...

  9. Bitnami LNMP集成包安装简单总结

    前言发送图文消息时间点,访问量大,请求并发多,业务web机处理不过来,新增加了2台web机应对.搞过Linux软件安装的都知道,各种库的依赖会把人搞崩溃,尤其是服务器不能访问外网的情况下,会非常的蛋疼 ...

  10. 豆瓣 jsonp 请求数据 并分页

    豆瓣分页 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...