• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#LINQ技术简介

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

LINQ技术:解决降低访问和整合信息数据的复杂度的问题,即集合访问技术

LINQ,语言级集成查询(Language INtegrated Query)

C#3.0 LINQ 查询语法

首先来看一个很简单的LINQ查询例子,查询一个int 数组中小于5的数字,并按照大小顺序排列:

class Program

  {

  static void Main(string[] args)

  {

  int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };

  var m = from n in arr where n < 5 order by n select n;

  foreach (var n in m)

  {

  Console.WriteLine(n);

  }

  Console.ReadLine();

  }

  }

  上述代码除了LINQ查询语法外,其他都是我们所熟悉的语法,而LINQ查询语法跟SQL查询语法很相识,除了先后顺序。

  Q:为何 LINQ 查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?select 开头这种写法跟SQL的写法更接近,更易懂呀?

  A:简单来说,为了IDE的智能感知(Intelisence)这个功能,select 关键字放在后面了,VB9时代都是放在前面的。

以下为LINQ语法设计的解释与补充(LINQ语法的形式过程),自己可以试着改为LINQ语法形式:

  感觉C#设计人员对LINQ的语法考虑欠佳,我对LINQ涉猎不深,但是举例说明我对LINQ语法设计的考虑:

  问题:从int数组a中选择范围在18~28之间的值,并按照升序输出int数组b

  已知:int[] a;

  解决:int[] b = SQL{select int from a where int >= 18 and int <= 28 order by int};

  问题:从结构体Point列表a中选择距离Point O不超过单位100的Point列表b

  已知:List<Point> a; Point O; 函数float Distance(Point A, Point B);

  解决:List<Point> b = SQL{select Point from a where Distance(Point, O) <= 100};

  问题:将字符串s中所有数字设置为字符'0'

  已知:string s; 设char[] chars = s.ToCharArray();

  解决:char[] result = SQL{update chars set char = '0' where char >= '0' and char <= '9'};

  问题:在byte数组a后插入255,形成新的数组b

  已知:byte[] a;

  解决:byte[] b = SQL{insert into a values(255)};

  问题:删除int数组a中的负值,形成新的数组b

  已知:int[] a;

  解决:int[] b = SQL{delete int from a where int < 0};

LINQ与SQL区别:两者虽然用途相似,但所处的语言环境完全不同。LINQ处理的是对象实体这些的,而SQL则是处理表格。如:

Int [] a = {...};
// 从数组中查找非负整数并按照升序排列
from n in a where n >= 0 order by n select n


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
一个人民币大小写转换的c#代码(两年前写的)发布时间:2022-07-14
下一篇:
C#关闭所有线程发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap