Другие уже объяснили вам эту проблему. Вы не можете выполнять методы C# на сервере SQL ...
Обычно вы пытаетесь изменить свой запрос:
var adrsQuery = (from a in this.Context.Addresses
where myList.Contains(a.Address_K)
select new AlternateAddressesDB()
{
Line1 = a.AddressLine1 == null || a.AddressLine1.TrimEnd() == string.Empty ? "Medical Office" : a.AddressLine1,
Line2 = a.AddressLine2,
City = a.City,
State = a.State,
ZipCode = a.ZipCode
}).ToList();
или вы вынуждаете выполнение Вашего метода локально:
var adrsQuery = (from a in this.Context.Addresses
where myList.Contains(a.Address_K)
select new AlternateAddressesDB()
{
Line1 = a.AddressLine1,
Line2 = a.AddressLine2,
City = a.City,
State = a.State,
ZipCode = a.ZipCode
})
.AsEnumerable() // From here the query is executed "locally"
.Select(a => new AlternateAddressesDB()
{
Line1 = GetAddressLine1(a.Line1),
a.Line2,
a.City,
a.State,
a.ZipCode
})
.ToList();
Вы загружаете из БД нужные вам данные, а затем локально создаете новый набор объектов с данными «манипулировали»
(это второе решение обычно можно использовать только в финале .Select()
, потому что если вы выполняете полную .Where()
локально, вы просите слишком много строк на сервер, а затем вы пропускаете многие из них)
Существует второй/третий вариант: https://stackoverflow.com/a/29128874/613130 несколько дней назад они попросили мне как решить подобную проблему. Посмотрите на примеры, которые я дал с решением. Ограничением является то, что вам нужно, чтобы иметь возможность конвертировать метод команд, которые могут быть выполнены с помощью Entity Framework (так что вам нужно будет преобразовать .IsNullOrWhiteSpace()
к чему-то, что может быть отправлен в SQL), как:
[Expandable]
static string GetAddressLine1(Address address)
{
// Not necessary to implement, see linked answer
throw new NotImplementedException();
}
static Expression<Func<Address, string>> GetAddressLine1Expression()
{
return x => x.AddressLine1 == null || x.AddressLine1.TrimEnd() == string.Empty ? "Medical Office" : x.AddressLine1;
}
Обратите внимание, что эта дорога намного сложнее, и я не предлагаю ее слабому сердцу или тем, кто может следовать за более простыми дорогами (я лично их не использую)
Что значит «Похоже, что я не может вызвать метод там "? – MyCodeSucks
@MyCodeSucks, потому что он падает во время выполнения !!! – Bohn
Какая ошибка? – MyCodeSucks