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. HDU 3152 Obstacle Course(优先队列,广搜)

    题目 用优先队列优化普通的广搜就可以过了. #include<stdio.h> #include<string.h> #include<algorithm> usi ...

  2. java web 基本属性

    page指令 属性 描述 默认值 language 指定JSP页面使用的脚本语言 java import contenType include指令 taglib注释 <!--我是html注释-- ...

  3. NFA到DFA实例

    下面图使用NFA表示的状态转换图, 使用子集构造法,有如下过程, ε-closure(0) = {0, 1, 2, 3, 4, 6, 7}初始值,令为AA = {0, 1, 2, 3, 4, 6, 7 ...

  4. webpack-dev-server和webpack

    指导小伙伴在webstorm+nodejs环境下新建项目时,小伙伴出现了一个很神奇的问题:没有执行webpack-dev-server情况下,即使执行npm init,也不会出现package.jso ...

  5. 深入浅出了解HTTP协议

    深入浅出了解HTTP协议

  6. xth 的玫瑰花(codevs 1360)

    题目描述 Description 这天是rabbit 的生日前夕,Xth 来到花店,要给他的rabbit 买玫瑰花,为了保证质 量,他跟花店老板——小菜儿同学要求自己到花田采摘.小菜儿灰常希望早日见到 ...

  7. SecureCRT 的使用技巧

    SecureCRT 支持 SSH1,SSH2,Telnet,RLogin,Serial,和 TAPI 协议, 一般用来登录Linux服务器进行跨系统操作,也可代替 超级终端,进行串口 调试. 1.串口 ...

  8. 使用Java VisualVM配置Java应用程序/分析CPU或内存的使用情况(转)

    以下内容翻译自(机翻):https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html 当您需要发现应 ...

  9. ZooKeeper动态增加Server(动态增加节点)的研究(待实践)

    说明:是动态增加Server,不是动态增加连接到ZK Server的Client. 场景如下(转自外文): 1.在t=t_1->[peer-1(Leader),peer-2],peer-1是主节 ...

  10. [转]C#综合揭秘——深入分析委托与事件

    引言 本篇文章将为你介绍一下 Delegate 的使用方式,逐渐揭开 C# 当中事件(Event)的由来,它能使处理委托类型的过程变得更加简单.还将为您解释委托的协变与逆变,以及如何使用 Delega ...