グループの複合キーの一部として要素のリストを取得したいと考えています。しかし、これまで私はそれを行うためのクエリを書くことができませんでした。LinqのキーへのリストをSqlグループに追加する方法
RawMaterialあたりの合計在庫を表示しています(モデルの詳細はこちら)。RawMaterialのサプライヤーと一緒にリストしたいと思います。 私はこのクエリを試してみました:
var list = this.Stocks.Where(x => x.StockType == StockTypeEnum.RawMaterialEntered)
.GroupBy(i => new { RawMaterialId = i.RawMaterial.Id, RawMaterial = i.RawMaterial.Name,
Suppliers = i.RawMaterial.Suppliers.Select(j=> new { Id= j.Supplier.Id, Name = j.Supplier.Name}) })
.Select(g => new StockSummary
{
TotalAmount = g.Sum(i => i.Amount),
ComponentId = g.Key.RawMaterialId,
Component = g.Key.RawMaterial,
Suppliers = g.Key.Suppliers.Select(h=> new StockItemModel(){ Id = h.Id, Name = h.Name}).ToList()
})
.OrderByDescending(g => g.Component).ToList();
それはビルドするが、私はそれを実行しようとすると、私はこの例外を取得:
型「System.NotImplementedException」 の最初のチャンス例外がNHibernateの中で起こりました。 dll
私たちはさまざまなアプローチを試みましたが、何も機能しませんでした。 1つのクエリで目的の結果を得ることは可能ですか?
public class Stock
{
public RawMaterial RawMaterial{ get; set; }
public int Amount { get; set; }
}
public class RawMaterial
{
public int Id{ get;set; }
public string Name { get;set; }
public IList<SupplierInfo> SupplierInfos{ get;set; }
}
public class SupplierInfo
{
public int Id{ get;set; }
public Supplier Supplier { get;set; }
}
public class Supplier
{
public int Id { get;set; }
public string Name { get; set; }
}
はもともと我々は原料に利用可能な各総株式を表示するグリッドを持っていた:
私はこのモデルを持っています。私たちは、このクエリでその情報を取得する:
var list = this.Stocks.Where(x => x.StockType == StockTypeEnum.RawMaterialEntered)
.GroupBy(i => new { RawMaterialId = i.RawMaterial.Id, RawMaterial = i.RawMaterial.Name })
.Select(g => new StockSummary
{
TotalAmount = g.Sum(i => i.Amount),
ComponentId = g.Key.RawMaterialId,
Component = g.Key.RawMaterial,
})
.OrderByDescending(g => g.Component).ToList();
このデータは、このような表に示されている:
そして、前述したように、今、私たちはのリストを表示したいと思い前記コンポーネントを提供したサプライヤ。 1つのクエリですべてを行うことは可能ですか?すべての
ハイバネートソリューションSQL Serverのソリューションですか?私は休止状態であなたを助け始めることができませんでしたが、SQL Serverでこれを簡単にXMLを使用することができます。ここを見てください。 http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005 –
'GroupBy'コールのリストでデータをグループ化していますか?私が知る限り、NHibernateもEFもそのような操作をサポートしていません。 –
いいえ、あなたは1つのクエリでそれを行うことはできません。最初のクエリで必要なすべての結果を取得し、すべてをデータベースからロードし、アプリケーションでグループ化します。私はあなたがしたいことがSQLで可能であるかどうかはわかりません。 – Sidewinder94