2012-04-13 20 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