是否可以将 LinqDataSource.OrderBy 设置为方法的结果?

发布于 2024-10-03 14:03:13 字数 564 浏览 2 评论 0原文

我没有广泛使用 LINQ,但使用得越多,我就越意识到它的强大功能。如果您想从有界项上的属性进行排序,那么使用 LinqDataSource.OrderBy 子句显然很容易,但如果您想根据方法返回对项进行排序怎么办?以此类为例(请忽略古怪的设计 - 它只是用来强调我的观点):

public class DataItem
{
    private string Id { get; set; }

    private int SortValue { get; set; }

    public DataItem(string id, int sortValue)
    {
        this.Id = id;
        this.SortValue = sortValue;
    }

    public int GetSortValue()
    {
        return SortValue;
    }
}

有没有一种方法可以在 LinqDataSource 上设置 orderby 表达式,以便它使用从 GetSortValue 返回的值(即其他成员的顺序)比属性)但不改变 DataItem 类?

I haven't used LINQ extensively but the more I use it the more I realize how powerful it can be. Using the LinqDataSource.OrderBy clause is obviously easy if you want to sort from a property on the bounded items but what if you want to sort the items based on a method return? Take this class for instance (please ignore the quirky design - it's just used to emphasize my point):

public class DataItem
{
    private string Id { get; set; }

    private int SortValue { get; set; }

    public DataItem(string id, int sortValue)
    {
        this.Id = id;
        this.SortValue = sortValue;
    }

    public int GetSortValue()
    {
        return SortValue;
    }
}

Is there a way that I can set the orderby expression on the LinqDataSource so that it uses the value returned from GetSortValue (i.e order by other members than properties) but without altering the DataItem class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

惜醉颜 2024-10-10 14:03:14

MSDN docs 提到确实可以进行自定义排序,但我可能误解了你的问题。

The MSDN docs mention that it is indeed possible to do custom sorting but I might have misinterpreted your question.

宣告ˉ结束 2024-10-10 14:03:13

如果该方法没有参数,您可以用属性包装它吗?

public int SortOrderBy { get { return GetSortValue(); } }

编辑:如果参数是常量或类字段/属性,这也将起作用。

If the method has no parameters you could wrap it with a property?

public int SortOrderBy { get { return GetSortValue(); } }

Edit: This will also work if the parameters are constants or class fields/properties.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文