1

안녕 전문가 엔티티에 LINQ에서 특정 목록의 결과를 반환합니다 :어떻게이 코드를 작성 currenly

public IList<TResult> GetCustomQuery<TResult>(int orderID, Func<Order, TResult> selector) 
    { 
     using(RepositoryDataContext = new NorthwindEntities()) 
     { 
      IList<TResult> res = (from od in RepositoryDataContext.Order_Details 
            join o in RepositoryDataContext.Orders 
             on od.OrderID equals o.OrderID 
            join p in RepositoryDataContext.Products 
             on od.ProductID equals p.ProductID 
            join c in RepositoryDataContext.Customers 
             on o.CustomerID equals c.CustomerID 
            where o.OrderID > orderID 
            select new 
            { 
             o.OrderID, 
             od.UnitPrice, 
             od.Quantity, 
             p.ProductName, 
             c.CompanyName 
            }).Select<Order, TResult>(selector).ToList(); 
     } 
    } 

내가 특정 형식 (TResult)에서 기관 내 LINQ의 결과를 반환하고자합니다. Lambda Expression을 사용하여이 코드를 작성하는 것은 조인 때문에 어렵습니다. 이 줄의 예외는 다음과 같습니다. <을 선택하십시오. TResult> (선택자) 어떻게 고칠 수 있습니까? 감사합니다.

+0

그리고 어떤 예외가 있습니까? –

+0

'은 'System.Linq.IQueryable '을 'System.Linq.IQueryable '로 변환 할 수 없으며 'System.Linq.IQueryable '에 대한 정의를 포함하지 않습니다. 'Select'및 최상의 확장 메서드 오버로드 'System.Linq.Queryable.Select (System.Linq.IQueryable , System.Linq.Expressions.Expression >)가 있습니다. 일부 잘못된 인수' – Arian

+0

'Select new {}'문은 다른 유형으로 형변환 할 수없는 비정상 유형을 반환 할 것이고 메소드에서 반환 할 수 없습니다. – Novice

답변

0

마지막 두 번째 줄에는 Select() 전에 ToList()를 호출 해보십시오. 이처럼 :

}).ToList().Select<Order, TResult>(selector); 
+0

아니요 작동하지 않습니다. 오류가 있습니다. – Arian

1

대신 익명 유형을 생성하는하는 POCO 또는 귀하의 경우에게 주문

select new Order() 
{ 
OrderProperty1 = o.OrderID, 
OrderProperty2 = od.UnitPrice, 
OrderProperty3 = od.Quantity, 
OrderProperty4 = p.ProductName, 
OrderProperty5 = c.CompanyName 
}).Select<Order, TResult>(selector).ToList(); 
+0

감사합니다.하지만 그것은 "주문()"주문 클래스를 사용해야합니다 간단하지 않습니다. 주문 클래스는 generic.If하지 않는 예외를 던질 것입니다 같은 : 그것은 새로운() 제약이 없기 때문에 주문을 사용할 수 없습니다 ... – Arian

0

가능으로 반복 "고해상도"이고 TResult의 목록을 반환을 만들?

관련 문제