2012-09-12 5 views
0

저는 C#을 사용하여 LINQ 및 MS SQL을 사용하고 있습니다. 나는 레코드를 가져 오는 데 문제가있다. 나는 판매 기본 키 table.Data 같은 것입니다 거래에 의해 참조되는 판매 거래로 2 개 테이블, enter image description hereLINQ를 사용하여 테이블에서 마지막 트랜잭션 가져 오기

내가 뭘하려고 오전 양의 모든 레코드를 가져올 것이다있다! = 0에서 이 예에서 Sales2와 Sales3 만 포함하고 Sales1은 포함하지 않아야합니다. Sales1이 닫혀 있기 때문에. 내가 같은 쿼리를 작성했습니다

,

List<Sales> lstSales = (from ccs in context.Sales 
         join transactions in context.Transactions 
          on ccs.SALESID equals transactions.SALESID    
         where transactions .AMOUNT !=0 
         select ccs).ToList(); 

이 때문에 판매 증감에 대한 1 행, 양, 모든 3 개 판매 기록 나를 반환! = 0.

원하는 결과를 얻을 수 있도록 안내해주세요. 사전에

감사합니다, 비제이 이들 중 하나의

답변

0

, 여전히 당신은 결과에> 0 트랜잭션을 그래서 당신은 여전히 ​​Sales1 Id를 얻습니다.

대신 사용해보십시오 (테스트 해 보았지만 작동 함).

IEnumerable<int> closedIds = context.Transactions.Where(t => t.Amount == 0).Select(t=> s.SalesId); 
List<Sales> sales = context.Sales.Where(s => !closedIds.Contains(s.SalesId)); 

또 다른 접근법은 (컨텍스트에서 판매와 트랜잭션 사이에 연관이 있다고 가정 할 때);

List<Sales> sales = context.Sales.Where(s => !s.Transactions.Any(t=> t.Amount == 0)); 
+0

나는 당신과 비슷한 또 다른 접근법을 시도했는데, 어느 것이 더 빨리 실행 될지 확신하지 못했습니다 :) List lstCCSales = (context.Sales의 ccs에서! (context.Transactions의 t부터 t.AMOUNT == 0은 t.SALESID를 선택 함). Contains (ccs.SALESID) select ccs) .ToList(); –

-2

만들기 사용 : 조회가 폐쇄 거래를 필터링하지만

Enumerable.Any Enumerable.All

+0

답장을 보내 주셔서 감사합니다. 상기 질문에 조언 해 주시겠습니까? –

+0

링크가 유용한 참조이지만 OP – rene

+0

질문에 대답하지 않습니다. Enumerable.All 페이지를 살펴보고 예제 섹션으로 스크롤하십시오. 시나리오에 거의 맞는 예가 있습니다 ... – pbedat

관련 문제