2014-10-09 5 views
1

일부 소프트웨어로 인해 심오한 부분에 던져졌으며 문제가있는 LINQ가 관련되어 있습니다.LINQ Generic.ICollection 형식을 Generic.List로 암시 적으로 변환 할 수 없습니다.

배경 :

조직과 관련된 지불 목록을 표시해야합니다.

나는이 같은 데이터베이스에서 조직 개체를 당긴

: I 클래스로를 전달하려는 그런

var orgPayments = (from payments in orgDetails.Select(x => x.ProcessedPayments) select payments); 

: 다음과 같이 지불을 꺼내 한

var orgDetails = Ctx.Organizations.Where(x => x.OrganizationId == orgID); 

이 같은

public class InvoiceDetails 
{ 
    public List<ProcessedPayment> ProcessedPayment { get; set; } 
    public List<InvoiceLineItems> InvoiceLineItems { get; set; } 
} 

:

난 그냥 목록에 캐스팅 할 필요가 무엇인지 작동하지 않을 수

LINQ Cannot implicitly convert type Generic.ICollection to Generic.List 

:

InvoiceDetails InvoiceDetailModel = new InvoiceDetails 
{ 
    ProcessedPayment = orgPayments, 
    InvoiceLineItems = invoicelineitems 
}; 

는 내가 지칠대로 지친 오류가 발생합니다. 내가 시도 행운으로

var orgPayments = (from payments in orgDetails.Select(x => x.ProcessedPayments) select payments).ToList(); 

로 변경이

사람은 제가 뭘 잘못 찾아 도와 드릴까요?

+4

이 불분명 ,'var orgPayments = orgDetails.Select (x => x.ProcessedPayments) .ToList()'...가 아니라 'InvoiceLineItems'가 아닌 문제를 일으키는 지불인가? –

+2

'.ToList()'가 추가되지 않았습니까? 개체의 두 속성에 대해 오류가 반복 될 수 있으므로 invoicelineitems에도'.ToList()'를 호출해야 할 수도 있습니다. 또한 오류 메시지는'<>'대괄호 사이에 형식 지정자를 나타내야합니다. – David

+3

또한 실제 오류 메시지가 아닌 것으로 판단됩니다. 정확한 * 오류 메시지를 복사하여 귀하의 질문에 붙여주십시오. –

답변

3

첫 번째 쿼리는 내가 찾고있는 것으로 믿는 단일 조직이 아닌 조직 목록을 제공합니다 (OrganizationId이 기본 키라고 가정). Where 메서드를 살펴보면 IEnumerable<>을 반환합니다.

var orgDetails = organizations.Single(x => x.OrganizationId == orgID); 

orgID과 조직이없는 경우 대신 SingleOrDefault를 사용하고 orgDetails != null 있는지를 확인해야 할 수 있도록이 예외를 던질 것이라는 점에 유의하십시오

그래서 나는 그것을 변경합니다. 당신이 지불을 얻기 위해 더 LINQ를 필요로하고 대신 orgPayments 변수를 만드는, 그냥이 같은 orgDetails.ProcessedPayments을 사용하지 않는 것을 의미

: 당신은 모든 쿼리 식을 사용하는 이유

InvoiceDetails InvoiceDetailModel = new InvoiceDetails 
{ 
    ProcessedPayment = orgDetails.ProcessedPayments, 
    InvoiceLineItems = invoicelineitems 
}; 
+0

ProcessedPayment = orgDetails.ProcessedPayments.ToList() 도와 주셔서 감사합니다. :) –

-3

이 시도

감사합니다 : 당신이 정의하고 invoiceLineItems 변수에 할당하는 경우 또한

var orgPayments = orgDetails.Select(x => x.ProcessedPayments).ToList(); 

, 내가 볼 수 없습니다.

+0

그건 이미 문제입니다. 문제는 * why *입니다. –

관련 문제