저는 LINQ 및 Lamda 표현식에 완전히 새내기입니다. 나는 여러 데이터베이스 테이블에서 정보를 검색하는 조금 복잡한 SQL 문이 다음 WHERE...IN
SQL 절을 대체 .Contains()
방법을 사용하여,C에서 LINQ에 대한 복잡한 SQL #
SELECT A.OrderID, A.FORMJDENO, A.Title, B.Descr, C.Code, C.Descr, D.ModificationDate from OrderForm A
LEFT JOIN OrderPriority B ON A.OrderPriorityID = B.OrderPriorityID
LEFT JOIN StockClass C ON A.StockClassID = C.StockClassID
LEFT JOIN AuditTrailLog D ON A.OrderID = D.ObjectID
WHERE D.ColumnInfoID= 487 AND D.OldValue='1' AND D.NewValue='2' AND A.FormStatus=2 AND A.FormType=3 AND B.OrderPriorityID=1000001 AND C.StockClassID=1000002
AND A.DeptID IN
(SELECT DeptID FROM Department WHERE InstID = 1000006)
AND DATEDIFF(m,D.ModificationDate, A.VendorDeliveryDate) >= 3
나는 이미 LINQ가 거의 다했다,하지만 난 joins
, 구속 드 만들기 위해 도움이 필요합니다 결과는 다른 테이블에 속한 값을 기반으로하며 LINQ에서 DATEDIFF
을 사용합니다. 이것은 내가 이미 가지고 있고 잘 작동하지만, 분명히 위의 SQL 문과 같은 결과를 제한하지 않습니다. 나는 성공하지 못한 채 여러 가지 방법을 시도했다.
마지막으로 내가이 작업을 얻을 수 있었다 : 나는 등가 LINQ를
업데이트가 필요합니다. 이것은 SQL 문과 동일한 레코드를 검색하는 최종 LINQ입니다. @Gert 아놀드에 많은 감사 :
var valid = dba.OrderForm
.Where(q => q.FormType == 3
&& q.FormStatus == 2
&& q.OrderPriority.OrderPriorityID == orderpriorityID
&& q.StockClass.StockClassID == stockclassID
&& dba.AuditTrailLog.Where(log => q.OrderID==log.ObjectID)
.Any(log => log.ColumnInfoID == 487
&& log.OldValue == "1"
&& log.NewValue == "2"
&& EntityFunctions.DiffMonths(log.ModificationDate,
q.VendorDeliveryDate) >= period)
&& departments.Contains(q.DeptID));
Linq에 - 투 - 엔티티 사용할 수 있습니까? 그리고 OrderForm - AuditTrailLog 협회의 다양성은 무엇입니까? –
예 Linq to Entities, Visual C#에서 MVC ASP.NET 프로젝트를 개발 중입니다. OrderForm-AuditTrailLog의 다양성은 1.N – equisde