2012-04-13 2 views
0

나는이 수업이 있습니다그룹으로 목록 <Item>

public class Item 
{ 
    public virtual int32 Id { get; set; } 
    public virtual Previa Previa { get; set; } 
    public virtual Product Product { get; set; } 
    public virtual Int32 Quantity { get; set; } 
    public virtual Decimal Price { get; set; } 
    public virtual Decimal Total { get; set; } 
} 

을 그리고 지금은 수량과 총의 합과 제품으로 모든 데이터베이스의 항목, 그룹을 찾기 위해 쿼리에 필요합니다. 모든 항목을 찾기 위해 , 내가 사용

public List<Item> FindItem(int IdProduct = 0) 
{ 
    var retorno = (from c in Session.Query<Item>() 
        select c); 

    if (IdProduto > 0) 
     retorno = retorno.Where(x => x.Product.Id == IdProduct) 

    return retorno.ToList<Item>(); 
} 

하지만 어떻게 그룹이 항목에 모른다. 누군가 나를 도울 수 있을까요?

+3

'grupo'란 무엇입니까? 그게 어디서 온거야? 이 항목을 그룹화하여 무엇을 의미합니까 - 어떻게 의미합니까? – Oded

+0

'IdProduct'가 동일한 제품이 많이 있습니까? –

+0

Oded, 죄송합니다 ... "grupo"는 "retorno"입니다. 나는 편집한다. – JohnyMoraes

답변

4

귀하의 질문이 명확하지,하지만 당신은 쿼리를 원하는처럼 같은 것이 소리 : 다른 문제이다

var query = from item in Session.Query<Item>() 
      group item by item.Product into g 
      select new { 
       Product = g.Key, 
       Quantity = g.Sum(item => item.Quantity), 
       Total = g.Sum(item => item.Total) 
      }; 

당신이 그 뒤를 통과하는 방법 - 당신은 거의 확실 을하지 않습니다 List<Item>을 원합니다 ...

+0

고마워, 아주 좋은 해결책이지만, 지금 내가 어떻게 조작합니까? 이 목록을 반환 ? 그렇다면 목록에있는 모든 필드를 어떻게 얻습니까? – JohnyMoraes

+1

@JohnyMoraes : 그래서 "내가 어떻게 그 뒤를 통과 시키는가가 다른 문제"라고 말한 이유입니다. 아마도이 그룹핑을위한 새로운 유형을 만들고 싶을 것입니다. –

+0

오오 그렇습니다 ... 답변 주셔서 감사합니다, 내 친구. – JohnyMoraes