그룹의 복합 키의 일부로 요소 목록을 검색하고 싶습니다. 그러나 지금까지는 쿼리를 작성하지 못했습니다.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
우리는 다른 접근 방식을 시도했지만 아무 것도 효과가 없었습니다. 하나의 쿼리로 원하는 결과를 얻을 수 있습니까?
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();
이 데이터는 다음과 유사한 표에 나와 있습니다 : 우리는이 쿼리 정보를 검색 상기 구성 요소를 제공 한 공급자. 하나의 쿼리로 모든 것을 수행 할 수 있습니까?
최대 절전 모드 솔루션을 찾고 계십니까? SQL Server 솔루션? 내가 최대 절전 모드로 당신을 도울 수 없지만 SQL 서버에서 물건을 사용할 수 있고 XML을 쉽게 사용할 수 있습니다. 여기 좀 봐. http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005 –
'GroupBy' 호출의 목록으로 데이터를 그룹화 하시겠습니까? 내가 아는 한, NHibernate 나 EF는 그런 연산을 지원하지 않는다. –
나는 하나의 질문에 그것을 할 수 없다고 말하고 싶습니다. 첫 번째 쿼리에서 필요한 모든 결과를 가져와 데이터베이스에서 모두로드하고 응용 프로그램에서 그룹화합니다. 나는 당신이하고 싶은 것이 SQL에서도 가능하다고 확신하지 못한다. – Sidewinder94