如何将数据转换为可观察的集合

时间:2012-06-04 11:57:03

标签: linq windows-phone-7

我正在使用这样的数据库结构:

item_id     int
list_name   string
category_name   string
item_name   string
qty     int
price       double
total_amt   double

我正在尝试根据类别获取项目列表..(分组和&总和)

private ObservableCollection<shoppingitem> _purchased;
public ObservableCollection<shoppingitem> Purchased
{
    get
    {
        return _purchased;
    }
    set
    {
        _purchased = value;
        notifypropertychanged("Purchased");
    }
}

public void  budgetcategorywise()
{
     var q = from shoppingItem p in db.Item1
               group p by p.category_name into g
               select new { category = g.Key, total = g.Sum(p => p.total_amt) };

     Purchased=new ObservableCollection<shoppingitem>(q);
}

它给出了类型转换的错误。 现在的问题是我应该如何将此结果绑定到列表框。 它需要转换..?

我需要将ObservableCollection中的结果转换为与listbox绑定..

2 个答案:

答案 0 :(得分:2)

您应该返回shoppingitem的集合,而不是匿名类型!

只需将select new替换为select new shoppingitem,它就可以正常使用了!

答案 1 :(得分:0)

您对shoppingItem进行分组,并尝试将聚合结果作为shoppingItem列表返回。你应该在集合中返回一个命名类型是正确的,但我不认为它应该是shoppingItem。只需使用一个简单的类来传输结果。像

class ShoppingItemSumDto
{
    public string Name { get; set; }
    public int Sum { get; set; }
}