Dynamite动态排序库

易于使用和高性能动态排序库支持类似 SQL 语法和嵌套/复杂的表达式,使用 System.Linq.Expression 动态生成快速比较器。

使用此库就可以使用文字的排序表达式对List<T>进行排序 :

List<Person> person;
person.Sort("Name.Length, BirthDate DESCENDING");

还可以使用 LINQ 一样的 OrderBy 这样:

foreach (Person p persons.OrderBy ("BirthDate.Year,Name")
 {
    Console.WriteLine(p.Name) ;
 } 

主要特点:

1 、易于使用:重写了已经存在的扩展方法Sort和OrderBy

2、高性能:由于使用Linq的动态编译的表达式

3、支持arrays, List<T>, IEnumerable<T>, IQueryable<T>和DataSet

4、支持所有的public 的属性和字段,包括Nullable类型

5、支持所有的引用类型(class)和值类型(struct)的字段和属性

6、支持嵌套的属性表达式,例如Mother.Name.Length

7、字符串大小写无关

8、开放式的设计:可以自己扩展Comparison<T> delegates, IComparer<T> 和非泛型的 IComparer 用于其它的排序场景。

项目地址:http://www.codeplex.com/dynamite

Dynamite 库设计的使用: Dynamite: High Performace Dynamic Sorting Using Expressions

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jed的技术阶梯

Kafka 自定义序列化器和反序列化器

现 Kafka Producer 需要把 Customer 类的对象序列化成字节数组发送给 Kafka Broker,同时 Kafka Consumer 需要把...

56630
来自专栏程序员的SOD蜜

不使用反射的实体类方案

看过很多ORM的实体类方案,大多是用反射来读数据库数据,这样当频繁操作实体类的时候效率很低,我借鉴了一位朋友的思路,采用.NET 2.0的泛型技术,为实体类提供...

22380
来自专栏跟着阿笨一起玩NET

.NET常用操作小知识

 var v = StringTruncat("广东省深圳市西乡镇宝安区", 10, "...");

6610
来自专栏Porschev[钟慰]的专栏

用泛型的IEqualityComparer<T>接口去重复项

写这个源于CSDN一位网友的提问 题目:下列数据放在一个List中,当ID和Name都相同时,去掉重复数据 ID Name 1  张三 1  李三 1  小伟 ...

19690
来自专栏DOTNET

C#要点补充

1字符串与时间的互转 DateTime.TryParse将空字符串、为null或格式不正确,则转换为的DateTime所代表的值为:0001/1/1 0:00...

29550
来自专栏GreenLeaves

EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)

日常开发中,经常会碰到一些自引用的实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型. 以下是自...

22760
来自专栏逸鹏说道

C# 温故而知新:Stream篇(三)

TextWriter 和 StreamWriter 目录: 为何介绍TextWriter? TextWriter的构造,常用属性和方法 IFormatProvi...

34070
来自专栏张善友的专栏

学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]

    1、在客户端调用WebService,脚本执行顺序出现了问题(报错了:XXX没有定义!).问题出在Atlas还没有初始化完成.     解决办法Alta...

21680
来自专栏小樱的经验随笔

Codeforces 706B Interesting drink

B. Interesting drink time limit per test:2 seconds memory limit per test:256 meg...

30380
来自专栏大内老A

Delegate如何进行类型转换?

我们知道对于两个不具有继承关系的两个类型,如果没有为它们定义转换器,两这之间的类型转换是不允许的,Delegate也是如此。但是有时候我们却希望“兼容”的两种D...

21080

扫码关注云+社区

领取腾讯云代金券