LINQ Group by查询的一个问题
我有一个很好的问题LINQ Group by查询的一个问题,linq,group-by,linq-group,Linq,Group By,Linq Group,我有一个很好的问题 private ObservableCollection<Grouping<string, SEListItemTemplate>> MonkeysGrouped { get; set; } var sorted = from item in CollPublic orderby item.Title group item
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;
private observeCollection{get;set;}
var sorted=CollPublic中的from项
orderby item.Title
按项目分组。将标题放入listData
选择新分组(listData.Key、listData);
MonkeysGrouped=新的ObservableCollection(已排序);
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);
var sorted=来自公共目录中的项目
orderby(OrderByFunc)
将项目按(GroupByFunc)分组到listData中
选择新分组(listData.Key、listData);
如果我尝试这样做,最后一行(选择新建分组…)会抛出一个编译错误,如果我将字符串更改为对象,它会编译得很好,但在运行时会抛出一个错误,表示至少有一个对象应该实现Icomparable以进行排序&至少有一个对象应该为上述查询中的分组部分实现IGrouping。我怎样才能做到这一点
下面是自定义排序和分组函数的定义,以备不时之需
public Func<SEListItemTemplate, Object> OrderByFunc
{
get{return _orderByFunc; }
set {_orderByFunc = value; }
}
public Func<SEListItemTemplate, Object> OrderByFunc
{
get {return _orderByFunc; }
set {_orderByFunc = value; }
}
public Func OrderByFunc
{
获取{return\u orderByFunc;}
设置{u orderByFunc=value;}
}
公共函数OrderByFunc
{
获取{return\u orderByFunc;}
设置{u 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;
var sorted=CollPublic.OrderBy(OrderByFunc).GroupBy(GroupByFunc);
foreach(已排序的变量项)
{
var t=新分组(item.Key,item);
添加(t);
}
list.ItemsSource=MonkeysGrouped;