LongListSelector比较特殊,它要求数据源至少实现IEnumerable<T>接口,然后里面的每一个元素也要实现IEnumerable<T>接口.
考虑到还要提供分组标题,如果能够使用Linq语句查询就更好了,因为它返回的对象实现了IGrouping<TKey,TElement>接口.
这个接口本身就继承了IEnumerable<T>接口.但是不能够直接使用Linq分组查询返回分组对象,因为SilverLight的数据绑定使用Type.GetProperty()来得到指定属性,这个方法无法获得显示实现的接口属性.而分组对象的TKey属性就是通过显示实现IGrouping<TKey, TElement>接口而来的,因此,需要像下面过样:
public class Grouping<Tkey, TElement> : List<TElement>
{
public Grouping(IGrouping<Tkey, TElement> g) :base(g)
{
Key = g.Key;
}
public Tkey Key { get; set; }
}
from b in 集合
select new Grouping<key, element>(g);
这样就可以使用linq语句了.