posts - 930,  comments - 588,  views - 402万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

CSharp3.0中扩展方法,直接看代码:

/// <summary>
/// Orders the by.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">The list.</param>
/// <param name="sortExpression">The sort expression.</param>
/// <returns>IEnumerable<T></returns>
public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> list, string sortExpression)
{
    sortExpression += "";
    string[] parts = sortExpression.Split(' ');
    bool descending = false;
    string property = "";

    if (parts.Length > 0 && parts[0] != "")
    {
        property = parts[0];

        if (parts.Length > 1)
        {
            descending = parts[1].ToLower().Contains("esc");
        }

        PropertyInfo prop = typeof(T).GetProperty(property);

        if (prop == null)
        {
            throw new Exception("No property '" + property + "' in + " + typeof(T).Name + "'");
        }

        if (descending)
            return list.OrderByDescending(x => prop.GetValue(x, null));
        else
            return list.OrderBy(x => prop.GetValue(x, null));
    }

    return list;
}

如何用呢?很简单:

public void Test()
{
    var list = new List<Customer>();
    list.OrderBy("Name desc"); 
}

public class Customer
{
    public string Name { get; set; }
}

是不是很实用呀,这个来自一个名叫http://www.extensionmethod.net/ 网站.希望对您有帮助.

Author:Petter  http://wintersun.cnblogs.com

posted on   PetterLiu  阅读(2477)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2008-08-16 WinForm中多线程操作控件
点击右上角即可分享
微信分享提示