gpt4 book ai didi

c# - 无法将类型 'System.Collections.Generic.List< >' 隐式转换为 'System.Collections.Generic.IList< >'

转载 作者:行者123 更新时间:2023-11-30 13:19:21 24 4
gpt4 key购买 nike

这篇文章可能有很多重复项。但是我尝试了其中的大部分,不幸的是我的错误仍然存​​在发生了。

Error is : Error 1 Cannot implicitly convert type 'System.Collections.Generic.List<Report.Business.ViewModels.InvoiceMaster>' to 'System.Collections.Generic.IList<ICSNew.Data.InvoiceHD>'. An explicit conversion exists (are you missing a cast?)

public IList<InvoiceHD> GetAllInvoiceMasterDetailsByInvoiceId(int InvoiceId)
{
var dbMstDtl = ireportrepository.GetAllInvoiceMasterDetailsByInvoiceId(InvoiceId);

var MstDtl = from mst in dbMstDtl
select new Report.Business.ViewModels.InvoiceMaster
{
ModifiedDate = mst.ModifiedDate,
SubTotal = Convert.ToDecimal(mst.SubTotal),
TotalDiscount = Convert.ToDecimal(mst.TotalDiscount),
VAT = Convert.ToDecimal(mst.VAT),
NBT = Convert.ToDecimal(mst.NBT),
AmtAfterDiscount = Convert.ToDecimal(mst.AmtAfterDiscount)
};

return MstDtl.ToList();
}

在一些帖子中,当他们使用 return MstDtl.AsEnumerable().ToList();

时,我看到这个问题得到了解决

但在我的情况下它也不起作用(出现错误)

最佳答案

假设InvoiceMaster派生自或实现 InvoiceHD ,并且您使用的是 C# 4 和 .NET 4 或更高版本,您可以只使用通用方差:

return MstDtl.ToList<InvoiceHD>();

这使用了 IEnumerable<InvoiceMaster> 的事实是一个 IEnumerable<InvoiceHD>因为IEnumerable<T>T协变 .

另一种解决方法是更改​​ MstDtl 的声明使用显式类型:

IEnumerable<InvoiceMaster> MstDtl = ...;

(我还建议遵循常规的 C# 命名,其中局部变量以小写字母开头,但这是另一回事。)

关于c# - 无法将类型 'System.Collections.Generic.List< >' 隐式转换为 'System.Collections.Generic.IList< >',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com