阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍C#集合查询Linq在项目中使用详解

75次阅读
没有评论

共计 1777 个字符,预计需要花费 5 分钟才能阅读完成。

导读 本文主要介绍了 C# 集合查询 Linq 在项目中使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

要说哪门后端语言的语法优雅,那就不得不提 C#,而在我看来,LINQ 语法可以说是其优雅的重要一环!

通常后端从数据库查询出来的数据并不是直接返回给前端使用的(不然前端 ….),而是需要进行二次的加工筛选处理等操作!而这个操作就离不开 LINQ,不然 for 循环套 for 循环,先不说可不可行,肯定可行,但是代码的可读性完全丢失,其他同行看到也会笑话人,连编译器运行这段代码时也是发尽牢骚(….),从而导致程序的性能低下!

当然如果用 SQL 一次性把数据处理到位也行,但是实际项目开发中,很少能一次处理到位的,往往都需要二次处理(比如:我不仅需要 List,还需要统计信息,总数、均值,总和等)

Linq Lambda

说到 Linq,就不得不提 Lambda 表达式了,说实话,实际开发中,直接用 Linq 写的相关代码还真不多,Lambda 表达式到处都是!

先上代码,直观看看他们两者有什么区别

static void Main(string[] args)
{List users = new List();
    var letters = "abcdefghijklmnopqrstuvwxyz";
    var rand = new Random();
    for (int i = 0; i  usera = from u in users where u.Age  userb = users.Where(x => x.Age 

看完代码,是不是感觉 Linq 跟 SQL 差不多,对,本来他们就是类似语言,我个人猜测应该是模仿出来的一种语法糖吧(具体谁模仿谁就不得而知了), 相似也好,学起来更方便了。而 Lambda 表达式写起来是真的舒服!

那么,Linq 和 Lambda 有什么关系呢

包含的关系,Linq 范围更广一些,Lambda 表达式看起来像一个箭头函数,就是!,也可以说是一个匿名函数!他相当于 Linq 的二次封装语法糖吧(个人理解),基本上 Linq 能实现的,Lambda 表达式都可以实现

通常沟通中,说 Linq 写法,其实默认就是 Linq Lambda 表达式了。直接链式写法,简洁,可读性,后期维护起来也是非常方便的。众所周知,SQL 能实现的功能是非常强大的,而 Linq 同样可以实现。但实际开发中,SQL 一般会写的相当复杂,聚合查询是常事,而 Linq 一般很少涉及(也能多表查询),更多的是诸如去重、筛选、排序、分组、统计计算等操作

Linq 项目中的一次使用经历

获取不同用户的权限菜单 当用户登录时,可以获取到用户的权限菜单集合(id 集合),而具体展示菜单,还需要到全部菜单集合中去查找对应的,然后筛选出来,返回给前端,最后进行渲染展示!如果菜单集合 List 全都是一级菜单,那相当简单,但是如果有二级、三级菜单就比较麻烦了,在这个筛选过程中,我就用到了 Linq 来实现部分功能

//powers 用户权限菜单集合
//menus 全部菜单集合
//menus.SubItems 二级菜单集合 

(from sub in menus.SubItems where powers.Any(x=>x.Key == sub.Id) select sub).Count()

如上代码段,可以获取到当前菜单的子菜单的个数,如果不加外层的 Count(),那结果就是当前菜单子菜单(此用户有权限的)集合,如果不采用 Linq,一行代码很难实现(方法还是有的,只是不会 Linq 那么方便写)

Linq to js [在前端的应用]

LINQ 其实并不是后端语言的专属,前端同样可以使用,只需要引用相应的 js 插件即可

js、vue 等项目中都有对应的插件(例如 jslinq),仅需要对应的组件中引入插件(也可以在母版页或全局引用),然后就可以像后端语言中一样的使用即可。

具体写法与后端语言差不多,常用方法名也都一样

要说不一样的地方,我感觉唯一不好的体验就是,前端使用时,没有代码提示了,如果对 LINQ 不太熟悉的,在使用 LINQ 时,还需要借助相关文档,多用几次,自然就不算什么问题了。

这里就不展开细说 Linq 在前端的具体用法了,需要的可以自行查询,这里仅做一个抛砖引玉的效果。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1777字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中