LINQ 按查询分组的问题



我有一个工作正常的查询

  private ObservableCollection<Grouping<string, SEListItemTemplate>> MonkeysGrouped { get; set; }

            var sorted = from item in CollPublic
                         orderby item.Title
                         group item by item.Title into listData
                         select new Grouping<string, SEListItemTemplate>(listData.Key, listData);
            MonkeysGrouped = new ObservableCollection<Grouping<string, SEListItemTemplate>>(sorted);
            list.ItemsSource = MonkeysGrouped;

如果现在我想使用自定义排序和分组功能,如下所示,我该怎么做?

var sorted = from item in CollPublic
                         orderby (OrderByFunc)
                         group item by (GroupByFunc) into listData
                         select new Grouping<string, SEListItemTemplate>(listData.Key, listData);
如果我

尝试这样做,最后一行(选择新的分组..(会抛出编译错误如果我将字符串更改为对象,它可以很好地编译,但在运行时抛出一个错误,说至少有 1 个对象应该实现 Icomparable 的排序和至少一个对象应该为上述查询中的分组部分实现 IGrouping。我怎样才能做到这一点?

以防万一,下面是我的自定义排序和组功能的定义

public Func<SEListItemTemplate, Object> OrderByFunc
    {
        get{return _orderByFunc; }
        set {_orderByFunc = value; }
    }
public Func<SEListItemTemplate, Object> OrderByFunc
    {
        get {return _orderByFunc; }
        set {_orderByFunc = value; }
    }

任何帮助,不胜感激。谢谢

更新:以下代码运行良好。请让我知道是否有更好的方法来编写下面的这个 lambda 函数。`

 var sorted = CollPublic.OrderBy(OrderByFunc).GroupBy(GroupByFunc);
                foreach (var item in sorted)
                {
                    var t = new Grouping<object, SEListItemTemplate>(item.Key, item);
                    MonkeysGrouped.Add(t); 
                }  
list.ItemsSource = MonkeysGrouped;

相关内容

  • 没有找到相关文章

最新更新