2014-10-09 87 views
1

我已经在一些软件的底端引发了它,它涉及到LINQ,我遇到了问题。LINQ不能隐式地将类型Generic.ICollection转换为Generic.List

背景:

我需要显示与组织有关的付款清单。

我已经退出了组织对象从数据库中是这样的:

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

我已经然后拉出这样的方式:

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

然后我想将它们传递到一个类:

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

这样的:

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

我也得到了可怕的错误:

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

我只是不知道是什么,我需要做的,它转换到一个列表。我试图将其更改为

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

没有运气

谁能帮我找出我做错了吗?

感谢

+4

目前还不清楚为什么您使用的查询表达式都,而不仅仅是'var orgPayments = orgDetails.Select(x => x.ProcessedPayments).ToList()'...但是你确定*这是导致问题的支付而不是'InvoiceLineItems'? – 2014-10-09 15:45:04

+2

你确定添加'.ToList()'不起作用吗?这个错误可能会在对象的两个属性上重复出现,所以您可能还需要在'invoicelineitems'上调用'.ToList()'。另外,错误信息应该在'<>'方括号之间指明一个类型说明符。 – David 2014-10-09 15:45:25

+3

此外,我强烈怀疑这不是实际的错误消息。请将* exact *错误信息复制并粘贴到您的问题中。 – 2014-10-09 15:45:40

回答

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()感谢您花时间帮助我:) – 2014-10-09 19:46:54

-3

试试这个:

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

另外,我不明白你在哪里定义和分配给您的invoiceLineItems变量。

+0

这就是问题了。问题是*为什么*。 – 2014-10-09 15:44:37

相关问题