Linq to Object

 

本文将讲述C#中的Linq技术。


一:linq是什么? 

linq可以理解为嵌入C#语法的强类型查询语言。(注意:尽管linq看起来和Sql查询很像,但语法却不相同。)

二:linq的作用?
提供一种统一且对称的方式,让程序员得到数据和操作数据(此处的数据可以是XML,DataSet,物理数据等) 

三:linq可应用在哪些场景?
Linq to Object、Linq to XML、Linq to DataSet、Linq to Entities、Parallel Linq(并行处理linq查询返回的数据)

linq的基本语法:var result = from item in container select item; 

linq获取数据子集: var result = from item in container where booleanexpression select item;
 

 linq to object 例子

   
   
static void QueryStrings() { string [] games = { " Morrowind " , " Uncharted 2 " , " Fallout 3 " , " Daxter " , " Shock2 " }; // 构建一个查询表达式(注意:ling表达式在迭代内容之前,他们不会真正的运行计算) // linq此时还没有运算 // linq查询的结果集,应该总是使用隐式类型,在绝大数情况下,真正的返回值实现了泛型 IEnumerable<T>接口的类型 var subset = from g in games where g.Contains( " " ) orderby g select g; // 上面代码也可以写成 IEnumerable<string> subset = from g in games where g.Contains(" ") orderby g select g; // 输出结果。在迭代的时候才运算(这叫:延迟执行) foreach ( string s in subset) { Console.WriteLine( " 含有空格的是:{0} " ,s); } }

linq在迭代外运算例子:

   
   
// 在foreach逻辑外运算linq static void QueryInt() { // 如果希望在foreach逻辑外表运算Linq表达式,可以调用有Enumerable类型定义的扩展方法。如ToArray<T>()、ToList<T>()等。 int [] numbers = { 2 , 10 , 30 , 15 , 1 , 22 }; // 立即获取数据 int [] rst = ( from i in numbers where i > 10 orderby i select i).ToArray < int > (); }

linq查询中的常用函数
1.count<T>() 获取linq查询表达式返回的项数

   
   
static void FunLinq() { int [] numbers = { 2 , 10 , 30 , 15 , 1 , 22 }; // 输出大于10的总数 int count = (from i in numbers where i > 10 orderby i select i).Count < int > (); Console.WriteLine(count);//输出:3 }

 2.Reverse<T>对linq结果集中的项进行反转

   
   
var newnumbers = from i in numbers select i; foreach (var p in numbers.Reverse()) { Console.WriteLine(p); // 输出22 1 15 30 10 2 }

3.orderby 对linq进行排序,默认是正序

   
   
// 排序(正序) string [] games = { " Morrowind " , " Uncharted 2 " , " Fallout 3 " , " Daxter " , " Shock2 " }; var newn = from i in games orderby i ascending select i; foreach (var p in games) { Console.Write(p + " , " );// }
4.Distinct()移除数据中的重复项目
   
   
// 排序(正序) string [] games = { " Morrowind " , " Uncharted 2 " , " Fallout 3 " , " Daxter " , " Shock2 " , " Shock2 " }; var newn = from i in games orderby i ascending select i; foreach (var p in games.Disinct()) { Console.Write(p + " , " ); // }

5.聚合操作

   
   
// 聚合操作 // 最大值 var maxi = ( from i in games orderby i ascending select i).Max(); // 最小值 var mini = (from i in games orderby i ascending select i).Min(); // 平均值 var avar = (from i in numbers orderby i ascending select i).Average(); // 总和 var sum = (from i in numbers orderby i ascending select i).Sum();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值