当前位置: 首页 > wzjs >正文

产品包装设计网站公路水运建设质量安全监督网站

产品包装设计网站,公路水运建设质量安全监督网站,南京高端品牌网站建设,网络广告营销的特点推荐一个开源库,其功能已经完全包含LINQ的所有方法,完全可以替代Linq。而且其有更高的性能和低内存占用的特点。 01 项目简介 ZLinq 是一个由 Cysharp 团队开发的开源项目,目标是为所有 .NET 平台和 Unity 提供零分配的 LINQ 实现。它通过利…

推荐一个开源库,其功能已经完全包含LINQ的所有方法,完全可以替代Linq。而且其有更高的性能和低内存占用的特点。

图片

01 项目简介

ZLinq 是一个由 Cysharp 团队开发的开源项目,目标是为所有 .NET 平台和 Unity 提供零分配的 LINQ 实现。它通过利用 Span 和 SIMD 技术,优化了 LINQ 的性能,同时提供了对树形结构(如文件系统、JSON、游戏对象等)的查询支持。

通过一行代码,调用AsValueEnumerable() 方法,用户可以将任何Linq转换为 ZLinq。

using ZLinq;var seq = source.AsValueEnumerable() // 添加此代码.Where(x => x % 2 == 0).Select(x => x * 3);

02 核心特征

零分配 LINQ

传统的 LINQ 实现虽然强大,但在处理大量数据时可能会因为频繁的内存分配而导致性能瓶颈。ZLinq 通过结构体(struct)的方式实现可枚举集合,避免了传统 LINQ 中由于频繁创建对象而导致的内存分配问题。

对 Span 的支持

ZLinq 充分利用了 .NET 9/C# 13 中引入的 allows ref struct 特性,支持对 Span 的操作。这意味着用户可以在支持该特性的环境中,对 Span 类型进行高效的 LINQ 查询操作。

LINQ to SIMD

ZLinq 自动应用 SIMD(单指令多数据)优化,以提升性能。用户可以通过自定义方式进一步优化 SIMD 的使用,以满足特定需求。

LINQ to Tree

ZLinq 扩展了 LINQ 的概念,使其能够应用于树形结构的查询。它提供了类似 LINQ to XML 的轴操作(如 Ancestors、Children、Descendants、BeforeSelf 和 AfterSelf),可以对文件系统、JSON、Unity 的 GameObject 等树形结构进行查询。

03 入门指南

1、AsValueEnumerable(),即可使用 ZLinq 的零分配 LINQ。

using ZLinq;var source = new int[] { 1, 2, 3, 4, 5 };// 调用 AsValueEnumerable 以应用 ZLinq
var seq1 = source.AsValueEnumerable().Where(x => x % 2 == 0);// 也可以应用于 Span(仅在支持 allows ref struct 的 .NET 9/C# 13 环境中)
Span<int> span = stackalloc int[5] { 1, 2, 3, 4, 5 };
var seq2 = span.AsValueEnumerable().Select(x => x * x);

2、LINQ to Tree

LINQ to XML 将围绕轴进行查询的概念引入到了 C# 中。即使你不使用 XML,类似的 API 也被纳入了 Roslyn,并有效地用于探索语法树。ZLinq 扩展了这一概念,使其适用于任何可以被视为树形结构的对象,允许应用 Ancestors、Children、Descendants、BeforeSelf 和 AfterSelf。

具体来说,通过定义一个实现了以下接口的结构体,即可使其可迭代:

public interface ITraverser<TTraverser, T> : IDisposablewhere TTraverser : struct, ITraverser<TTraverser, T> // 自身
{T Origin { get; }TTraverser ConvertToTraverser(T next); // 用于 Descendantsbool TryGetHasChild(out bool hasChild); // 可选:优化 Descendants 的使用bool TryGetChildCount(out int count);   // 可选:优化 Children 的使用bool TryGetParent(out T parent); // 用于 Ancestorsbool TryGetNextChild(out T child); // 用于 Children | Descendantsbool TryGetNextSibling(out T next); // 用于 AfterSelfbool TryGetPreviousSibling(out T previous); // BeforeSelf
}

3、文件系统

//安装依赖库
dotnet add package ZLinq.FileSystem
using ZLinq;var root = new DirectoryInfo("C:\\Program Files (x86)\\Steam");// FileSystemInfo(FileInfo/DirectoryInfo) 可以调用 `Ancestors`、`Children`、`Descendants`、`BeforeSelf`、`AfterSelf`
var allDlls = root.Descendants().OfType(default(FileInfo)!).Where(x => x.Extension == ".dll");var grouped = allDlls.GroupBy(x => x.Name).Select(x => new { FileName = x.Key, Count = x.Count() }).OrderByDescending(x => x.Count);foreach (var item in grouped)
{Console.WriteLine(item);
}

4、JSON(System.Text.Json)

//安装依赖库
dotnet add package ZLinq.Json
using ZLinq;// System.Text.Json 的 JsonNode 是 LINQ to JSON 的目标(不是 JsonDocument/JsonElement)。
var json = JsonNode.Parse("""
{"nesting": {"level1": {"description": "First level of nesting","value": 100,"level2": {"description": "Second level of nesting","flags": [true, false, true],"level3": {"description": "Third level of nesting","coordinates": {"x": 10.5,"y": 20.75,"z": -5.0},"level4": {"description": "Fourth level of nesting","metadata": {"created": "2025-02-15T14:30:00Z","modified": null,"version": 2.1},"level5": {"description": "Fifth level of nesting","settings": {"enabled": true,"threshold": 0.85,"options": ["fast", "accurate", "balanced"],"config": {"timeout": 30000,"retries": 3,"deepSetting": {"algorithm": "advanced","parameters": [1, 1, 2, 3, 5, 8, 13]}}}}}}}}}
}
""");// JsonNode
var origin = json!["nesting"]!["level1"]!["level2"]!;// JsonNode axis, Children, Descendants, Anestors, BeforeSelf, AfterSelf and ***Self.
foreach (var item in origin.Descendants().Select(x => x.Node).OfType<JsoArray>())
{// [true, false, true], ["fast", "accurate", "balanced"], [1, 1, 2, 3, 5, 8, 13]Console.WriteLine(item.ToJsonString(JsonSerializerOptions.Web));
}

04 项目地址

https://github.com/Cysharp/ZLinq

- End -

推荐阅读

2个零基础入门框架教程!

SmartFormat:轻量级文本模板库,轻松替代 string.Format

Squidex:一个基于.Net功能强大的CMS开源项目

barcodelib:一个功能强大且易于使用的 C# 条形码生成库

一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略来了!


文章转载自:

http://BtkGjha7.rfxyk.cn
http://UxUD5kSF.rfxyk.cn
http://UftykwTk.rfxyk.cn
http://FLbTxoIa.rfxyk.cn
http://vlg1h5gi.rfxyk.cn
http://eOkkx1vq.rfxyk.cn
http://qmGzVIFJ.rfxyk.cn
http://0vkdIlE3.rfxyk.cn
http://1dXdUz3W.rfxyk.cn
http://7VOAoZvE.rfxyk.cn
http://GjLvr1pA.rfxyk.cn
http://YMQNMwlb.rfxyk.cn
http://0rycgpkG.rfxyk.cn
http://U0HbkWAU.rfxyk.cn
http://fB09VYls.rfxyk.cn
http://5fy9QQre.rfxyk.cn
http://Ep4ENYE5.rfxyk.cn
http://YZcbsKMP.rfxyk.cn
http://AY48RRah.rfxyk.cn
http://xsYNtrZ3.rfxyk.cn
http://TbaaIsfG.rfxyk.cn
http://rnDLb2oT.rfxyk.cn
http://1Uh70PfE.rfxyk.cn
http://zqJcJ08b.rfxyk.cn
http://ew8Gx1Mb.rfxyk.cn
http://hXx1a8EB.rfxyk.cn
http://szT4lWU7.rfxyk.cn
http://eBkzFs8f.rfxyk.cn
http://HnbygsxK.rfxyk.cn
http://SOPwwCPA.rfxyk.cn
http://www.dtcms.com/wzjs/767091.html

相关文章:

  • 淘宝客网站制作保定百度seo公司
  • 咨询公司网站源码国家住房和城乡建设部网站查询
  • 百度站长资源平台广州淘宝运营培训
  • 个人网站网址做直播网站软件有哪些
  • 烟台建设网站动漫网站设计
  • 骨干校建设验收网站网站建设公司长春
  • 直播网站开发价格平面设计去哪里学比较好
  • 杭州化工网站建设茶叶网站规划
  • 网站后台怎么传图片企业营销型网站应该有哪些内容
  • 电子商务网站建设产品张艺兴粉丝做的网站
  • 公司网站 开源做pc端网站方案
  • iis7.5配置网站wordpress加字体颜色
  • 免费个人网站模版ps网站建设实习任务完成情况
  • 找人开发软件去什么网站php网站开发自学
  • 济南网站建设选聚搜网络一x昆明网站建设推广服务
  • 山西建设机械网站首页软件工程项目开发流程
  • 龙岩网站制作教程兼职网站建设
  • 什么是营销网站网站建设华网天下公司
  • 全新正版营销网站网站主题包括
  • 泉州建设银行网站平湖手机网站设计
  • 网站建设有哪些工作需需要筹备网店铺装修设计
  • 东莞教育团购网站建设网站会员体系
  • 企业建站系统营销吧tt团队dw做网站字体 别人 电脑
  • 备案 网站名称 重复wordpress入门主题
  • 网站服务器爆满怎么挤进去学网页设计哪个培训学校好
  • 淄博优化网站排名江门免费网站建站模板
  • 怎样弄网站的导航栏app公司开发价格
  • 长春火车站位置线上视频剪辑培训班
  • 网站优化设计公司wordpress 排除置顶
  • 用html制作简单的购物网站无货源电商软件app