2012-06-04 2 views
0

я работаю со структурой базы данных, как это:как преобразовать данные в наблюдаемой коллекции

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 ..

+1

Зачем вам ObservableCollection для списка, который (я думаю) не изменится? –

ответ

2

Вы должны вернуть коллекцию shoppingitem, а не анонимный тип!

Просто замените select new на select new shoppingitem, и он должен работать нормально!

+1

Или, поскольку p уже является покупкой, вы можете просто «выбрать p' – legacybass

+0

@legacybass, но эта сумма суммирует {total_amt} ... – vidstige

0

Вы группа над shoppingItem s, и вы пытаетесь вернуть агрегированных результат в виде списка shoppingItem с. Правильно, что вы должны вернуть именованный тип в коллекции, но я не думаю, что это должно быть shoppingItem. Просто используйте простой класс для передачи результатов. Как

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