webservice+linq

一、 在网页爬数据

     1、先获得页面的所有html文本

     2、用正则表达式确定需要抓取的数据

     3、用IsMatch方法获得匹配的数据后存盘

        int pagesize = Convert.ToInt32(txtPageSize.Text.Trim());//获取到总共有多少页

        WebClient wc = new WebClient();       //创建实例

        wc.Encoding = Encoding.Default;       //确定编码方式

        for (int i = 1; i <= pagesize; i++)      //循环指定页码数的次数

        {

            string url = txtUrl.Text.Trim() + "?pn=";         //URL上加上get传参的方式传递页码

            if (string.IsNullOrEmpty(txtUrl.Text.Trim()))    //判断是否输入URL

            {

                return;

            }

            url += i;    //加页码

            、、string html = wc.DownloadString(url);    //获取到当前页的html内容

            MatchCollection mc = Regex.Matches(html, @"[1-9][0-9]{4,11}@(qq|QQ).com");   //匹配正则表达式

            StringBuilder sb = new StringBuilder();

            foreach (Match m in mc)    //对获得的正则匹配结果做循环处理

            {

                sb.AppendLine(m.Value + ";");   //每一个匹配的结果做一行数据处理

            }

            string s = sb.ToString();          //StringBuilder转为字符串

            File.AppendAllText(@"d:\1.txt", s, Encoding.Default);    //把字符串追加保存在文本文件中

        }

二、webservice

    1、用于不同的系统之间的数据通信。

    2、实例

       A、在web服务项目中添加【web服务(asmx)】类文件。

       B、如果web服务需要验证时在web服务开始时做用户名/密码的验证。

       C、调用web服务

          1)线添加相关web服务的引用:

              引用-->添加服务引用-->高级-->添加web引用-->指定服务的url-->指定web引用名称-->添加引用

          2) 当修改了web服务内容时除了重新生成外,需要更新web服务:

              Web Referrences中找web服务项-->点击更新web服务

       D、火车时刻表web服务实例:traintime

          traintime.TrainTimeWebService s = new traintime.TrainTimeWebService();    //创建服务实例

          string strStart = txtStart.Text.Trim();     //接受始发站

          string strEnd = txtEnd.Text.Trim();         //接受终点站

          DataTable dt = s.getStationAndTimeByStationName(strStart, strEnd, "").Tables[0];  //获得表结构的结果集

          GridView1.DataSource = dt;     //结果集指定为GridView的数据源

          GridView1.DataBind();          //绑定GridView

       E、飞机时刻表web服务:airtime

          airtime.DomesticAirline d = new airtime.DomesticAirline();

          string strStart = txtStart.Text.Trim();     //接受始发机场

          string strEnd = txtStart.Text.Trim();       //接受到达机场

          string strFromTime = txtStart.Text.Trim();  //接受起飞日期范围的开始日期

          string strToTime = txtStart.Text.Trim();    //接受起飞日期范围的结束日期

          DataTable dt = d.getDomesticAirlinesTime(strStart, strEnd,strFromTime,strToTime).Tables[0];  //获取结果集

          GridViewataSource = dt;       //结果集指定为GridView的数据源

          GridView1.DataBind();         //绑定GridView

       F、发布方法

           与其他页面的发布时一样的,然后使用时直接告诉url就可以。

    

三、Linq

    1、概念

       LINQ对任何数据类型的集合进行筛选的操作,如:数组,集合,哈希表,字典之类的数据都可以用LINQ来筛选。

    2、实例

       A、List<string> names = new List<string> { "ni", "dsad", "Jsdsds", "fsd" };

          var nameWithJ = from n1 in names where n1.StartsWith("J") orderby n1 select n1;

               //在names集合中取出以[J]开头的所有元素

               //n1 in names:表示n1是遍历names集合用的临时变量

               //from n1 in names:表示数据源就是names的集合

               //where n1.StartsWith("J"):筛选条件是n1当中第一字符为[J]的

               //orderby n1:排序方式是以n1中的内容

               //select n1:筛选结果返回的字段序列

    

       B、List<Racer> rs = new List<Racer>() {             //创建一个对象集合

              new Racer{Wins = 21, Country = "China"},new Racer{Wins=11,Country="China"},

              new Racer{Wins=14,Country="USA"},new Racer{Wins=22,Country="China"},

              new Racer{Wins=21,Country="China"},new Racer{Wins=35,Country="China"},

              new Racer{Wins=44,Country="China"},new Racer{Wins=66,Country="USA"},

              new Racer{Wins=44,Country="Japan"}};

          var rs1 = from r in rs                        //对rs对象集合为数据源

                    group r by r.Country into g         //以Country作为group by的分组因素,结果放入对象g中

                    orderby g.Count() descending, g.Key //根据Count排序,当Count相同的时候根据Key排序

                    where g.Count() >= 2                //只要累计数量大于等于2的

                    select new{KeyName=g.Key ,Count=g.Count()};   //返回有两个字段KeyName和Count的对象集合

    

            foreach (var r in rs1)          //遍历查询结果集

            {

                Console.WriteLine(r.KeyName.ToString());    //显示返回结果集的第一个字段值

                Console.WriteLine(r.Count.ToString());      //显示返回结果集的第二个字段值

            }

转载于:https://www.cnblogs.com/huang3/p/4962654.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LinqSamples 这些示例能够帮助您快速地了解 LINQ。对于具有一定 LINQ 经验的人员来说,它们还可以作为参考和指南。此外,还包括了几种实用工具。它们位于 LinqSamples 文件夹中。 •DynamicQuery: 在运行时创建 LINQ 查询的代码。 •LinqToNorthwind: 关于如何使用 LINQ To SQL 查询数据库的基本示例。 •LinqToXmlDataBinding: 将 LINQ to XML 代码绑定到 WPF 控件。 •ObjectDumper: 用于将 LINQ 查询的输出以文本模式写入屏幕的实用工具。 •PasteXmlAsLinq: 能够自动将 XML 转换为 LINQ to XML 的 Visual Studio 外接程序。 •QueryVisualizer: 使 LINQ to SQL 开发人员能够看到其查询的 SQL 代码,并能在网格中查看查询的结果。 •Reflector: 使用 LINQ 对使用反射 API 的代码中的对象进行正确的查询。 •RSS: 此示例可作为聚合若干 RSS 源的小型 Web 服务器。 •SampleQueries: 这是最重要的示例,其中包含了 500 多个关于如何在 LINQ to Objects、LINQ to SQL、LINQ to XML 和 LINQ to DataSet 中使用各个查询运算符的例子。 •SimpleLambdas: 几个关于如何编写和使用 lambda 表达式的示例。 •SimpleLinqToObjects: 简单的 LINQ 示例。为您显示使用 LINQ to Objects 创建内存对象的简单查询是多么简单。 •SimpleLinqToXml: 开始使用 LINQ to XML。 •WebServiceLinqProvider(TerraService): 用于 TerraServer-USA Web 服务的自定义 LINQ 提供程序和客户端。 •Whitepapers: 以下白皮书以 Word 格式存储在此目录中: ◦LINQ 项目概述 ◦LINQ to SQL 概述(适用于 C# 和 VB) ◦标准查询运算符 ◦LINQ to XML 概述 •WinFormsDataBinding: 学习如何在 Windows 窗体中使用网格显示 LINQ 查询。它包括一个一对多查询示例。 •XQuery: 另一个简单的 LINQ to XML 示例查询。此示例显示编写 LINQ to XML 查询所需的最少代码。 LINQ 示例数据库连接问题 如果开发计算机上安装有 SQL Server Express,则这些示例应无需修改即可正常发挥作用。下面是一个 备用连接字符串,如果不使用 SQL Express,但有 SQL Server 可供使用,则可对该字符串进行修改,以用于自己的用途。只要 test 一词显示在示例连接字符串中,您就可能需要修改该单词。 string connString = "server=test;database=northwind;user id=test;password=test"; 对于某些 SQL Express 安装,您可能无权启动用户实例。如果在此情况下收到错误消息,请尝试从连接字符串中删除子句 “;user instance = true”。 确保要访问的 northwind 数据库的副本未标记为只读。如有必要,请浏览到尝试访问的 NORTHWIND.MDF 的副本,右击该文件,然后选择“属性”。清除 只读特性。 用户已报告,在某些运行速度较慢的计算机上,或在使用虚拟 PC 时,某些数据库应用程序在首次运行时出错。请尝试运行该示例两次或三次。 未将 LDF (日志)文件随示例中包含的 Northwind 数据库自定义副本一起提供。特意这样做的目的是为了使 LDF 与 MDF 文件不会失去同步。运行使用该数据库的示例时,或从 Visual Studio 中的服务器资源管理器连接到该数据库时,将会自动创建 LDF 文件。如果在未先创建日志文件的情况下使用 SQL Server Management Studio,则在连接到 MDF 文件时,可能会遇到问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值