합계를 생성하기 위해 세 가지 레벨의 테이블에 걸친 LINQ 쿼리
-
06-07-2019 - |
문제
기본 키/외국 키 관계와 결합 된 일련의 테이블이 있습니다. 트랜잭션 테이블이 있으며 각 트랜잭션은 하나의 제품 만 참조합니다. 각 제품은 하나의 범주로만 존재할 수 있습니다.
Categories Products Transactions
------------- ------------- -----------------
CategoryId ProductId TransactionId
CategoryName CategoryId ProductId
ProductName TransactionAmount
나는 단지 linqtosql을 배우고 있으며 Lambda 표현식을 사용하여 각 범주의 제품에 액세스합니다 (x => x.products). 그러나 내가하려는 것은 트랜잭션 테이블에 액세스하는 것입니다. 특히 범주별로 모든 트랜잭션의 합을 얻는 것입니다.
LINQ 문에서 수동 조인을 만들어이 작업을 수행 할 수 있다고 확신합니다. 그러나 모든 테이블이 모델에서 PF/FK로 연결되기 때문에이 작업을 수행 해야하는 것 같지는 않습니다.
누구든지 시작하는 방법의 예를 제공 할 수 있습니까?
해결책
그것을 컴파일하려고하지 않고, 나는 이것이 당신이 원하는 방식으로 작동 할 것이라고 생각합니다. LINQ에서 SQL 데이터 컨텍스트에 연관성이 설정되어 있다고 가정합니다.
var transPerCategory = db.Categories
.Select( c => new {
Name = c.CategoryName,
Amount = c.Products
.Sum( p => p.Transactions
.Sum( t => t.TransactionAmount )
)
});
제휴하지 않습니다 StackOverflow