У меня есть две части кода, которые, кажется, имеют одинаковую функциональность, но одна из них приводит к исключению, а другая работает как шарм. Я хочу знать, можете ли вы представить себе, почему это происходит?
В моем веб-приложении есть строка ниже, которая приводит к этому исключению:
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
на первый список, а затем снова запускаю код, как показано ниже, все идет хорошо, и никаких исключений не возникает снова , Я хочу знать, что не так с первым фрагментом кода, которого нет в приведенном ниже фрагменте?
List<DeliveryAddress> addresseList = db.DeliveryAddress.ToList(); //magic trick?!
dynamic deliveryAddresses =
(from address in addresseList
select filterDeliveryAddressFields(address)).ToList();