【发布时间】:2020-04-16 10:42:29
【问题描述】:
我有两段代码,它们似乎具有相同的功能,但其中一段导致异常,而另一段则像魅力一样工作。我想知道你能想象为什么会这样吗?
我的网络应用程序中有以下行导致此异常:
LINQ to Entities 无法识别方法“System.Object” FilterDeliveryAddressFields(WebApplication1.Models.DeliveryAddress)'
dynamic deliveryAddresses = (from address in db.DeliveryAddress
select filterDeliveryAddressFields(address)).ToList();
这里是filterDeliveryAddressFields:
private dynamic filterDeliveryAddressFields(DeliveryAddress address)
{
return new { address.address, address.deliverTo, address.deliverToPhoneNumber, address.id };
}
这是 Linq-2-Sql 为 DeliveryAddress 生成的模型,它与 Subscriber 有外键关系:
public partial class DeliveryAddress
{
public int id { get; set; }
public int fkSubscriberId { get; set; }
public string address { get; set; }
public string deliverTo { get; set; }
public string deliverToPhoneNumber { get; set; }
public virtual Subscriber Subscriber { get; set; }
}
但是当我将db.DeliveryAddress 项目更改为首先列出然后再次运行代码时,如下所示,一切顺利,不再发生异常。我想知道sn-p下面没有发生的第一个代码sn-p有什么问题?
List<DeliveryAddress> addresseList = db.DeliveryAddress.ToList(); //magic trick?!
dynamic deliveryAddresses =
(from address in addresseList
select filterDeliveryAddressFields(address)).ToList();
【问题讨论】:
标签: c# linq linq-to-sql