你的位置:首页 > 软件开发 > ASP.net > LINQ:To Objects

LINQ:To Objects

发布时间:2016-08-28 12:00:07
LINQ 如何操作字符串  前言:    上次发布的 《LINQ:进阶 - LINQ 标准查询操作概述》(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝知此事要躬行”,没错,就是实战!这次让我们一起来看看一些操作字 ...

LINQ 如何操作字符串

  前言:  

  上次发布的 《LINQ:进阶 - LINQ 标准查询操作概述》(90+赞) 社会反响不错,但自己却始终觉得缺点什么!“纸上得来终觉浅,绝知此事要躬行”,没错,就是实战!这次让我们一起来看看一些操作字符串的技巧,也许能引我们从不同的角度思考问题,从而走出思维的死角!


 

  LINQ 可用于查询和转换字符串和字符串集合。它对文本文件中的半结构化数据尤其有用。LINQ 查询可与传统的字符串函数和正则表达式结合使用。  (1)如何统计单词在字符串出现次数

查询文本格式的半结构化数据

   许多不同类型的文本文件都包含一系列行,通常具有类似的格式,例如制表符分隔或逗号分隔文件或固定长度的行。在将此类文本文件读取到内存中后,可以使用 LINQ 来查询和/或修改行。LINQ 查询还简化了组合多个源的数据的任务。  

一、如何统计单词在字符串出现次数 

  请注意,若要执行计数,请先调用 Split 方法来创建词数组。Split 方法存在性能开销。如果对字符串执行的唯一操作是计数词,则应考虑改用 Matches 或 IndexOf 方法。LINQ:To Objects

 

二、如何查询包含指定的一组单词的句子

LINQ:To Objects

  

  查询运行时首先将文本拆分成句子,然后将句子拆分成包含每个单词的字符串数组。对于每个这样的数组,Distinct<TSource> 方法移除所有重复的单词,然后查询对单词数组和 wordstoMatch 数组执行 Intersect<TSource> 操作。如果交集的计数与 wordsToMatch 数组的计数相同,则在单词中找到了所有的单词,且返回原始句子。

  在对 Split 的调用中,使用标点符号作为分隔符,以从字符串中移除标点符号。如果您没有这样做,则假如您有一个字符串“Historically,”,该字符串不会与 wordsToMatch 数组中的“Historically”相匹配。根据源文本中标点的类型,您可能必须使用其他分隔符。
 1       //创建数据源 2       var names1Text = File.ReadAllLines(@"names1.txt"); 3       var names2Text = File.ReadAllLines(@"names2.txt"); 4  5       //创建查询,这里必须使用方法语法 6       var query = names1Text.Except(names2Text); 7  8       //执行查询 9       Console.WriteLine("The folloget='_blank'>wing lines are in names1.txt but not names2.txt");10       foreach (var name in query)11       {12         Console.WriteLine(name);13       }  
LINQ:To Objects

 

 1       //创建数据源 2       var scores = File.ReadAllLines(@"scores.csv"); 3       //可以改为 0~4 的任意值 4       const int sortField = 1; 5  6       //演示从方法返回查询 7       //返回查询变量,非查询结果 8       //这里执行查询 9       foreach (var score in RunQuery(scores, sortField))10       {11         Console.WriteLine(score);12       }
LINQ:To Objects

  

  此示例还演示如何从方法返回查询变量。

 

七、如何对一个分割的文件的字段重新排序

  逗号分隔值 (CSV) 文件是一种文本文件,通常用于存储电子表格数据或其他由行和列表示的表格数据。通过使用 Split 方法分隔字段,可以非常轻松地使用 LINQ 来查询和操作 CSV 文件。事实上,可以使用此技术来重新排列任何结构化文本行部分;此技术不局限于 CSV 文件。  

  在下面的示例中,假定有三列分别代表学生的“姓氏”、“名字”和“ID”。这些字段基于学生的姓氏按字母顺序排列。查询生成一个新序列,其中首先出现的是 ID 列,后面的第二列组合了学生的名字和姓氏。根据 ID 字段重新排列各行。结果保存到新文件,但不修改原始数据。    对于与数据文件位于同一文件夹中的每个组,程序将为这些组编写单独的文件。LINQ:To Objects

 

  查询的工作原理是使用 Split 方法将每一行文本转换为数组。每个数组元素表示一列。最后,每一列中的文本都转换为其数字表示形式。如果文件是制表符分隔文件,只需将 Split 方法中的参数更新为 \t。  

 

 

 

 

==================================================

LINQ 其它随笔 -  LINQ(目录) 

         LINQ:进阶 - LINQ 标准查询操作概述

 

【首联】http://www.cnblogs.com/liqingwen/p/5814204.html

==================================================

原标题:LINQ:To Objects

关键词:linq

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。