Так что некоторые методы не поддерживаются в Linq to Entities, поэтому вам нужно будет поместить их в память и выполнить там действия:
var lQuery = (from a in gServiceContext.CreateQuery("account")
let AccountName = !a.Contains("name") ? string.Empty : a["name"]
let Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"]
let State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"]
let Address = !a.Contains("address1_line1") ? string.Empty : a["address1_line1"]
let City = !a.Contains("address1_city") ? string.Empty : a["address1_city"]
select new
{
AccountName,
Zip,
State,
Address,
City,
a.lLead
}).AsEnumerable()
.Where(i => String.IsNullOrEmpty(i.Zip.ToString()) || String.IsNullOrEmpty(i.lLead.ZipCode) ? false : i.Zip.ToString().Substring(0,5).Equals(i.lLead.ZipCode.Substring(0,5))
.Select(i => new
{
Name = i.AccountName
});
Сгенерированный SQL будет выглядеть примерно так::
Select name... as AccountName, address1_city as City, etc
From account
, поэтому, если вы заметили, что предложение where отсутствует, то есть возвращаются все строки из учетной записи таблицы.
Некоторая фильтрация
var lQuery = (from a in gServiceContext.CreateQuery("account")
let AccountName = !a.Contains("name") ? string.Empty : a["name"]
let Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"]
let State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"]
let Address = !a.Contains("address1_line1") ? string.Empty : a["address1_line1"]
let City = !a.Contains("address1_city") ? string.Empty : a["address1_city"]
where Zip != null
&& Zip != string.Empty
&& lLead.ZipCode != null
&& lLead.ZipCode != string.Empty
&& Zip.Contains(lLead.ZipCode)
select new
{
AccountName,
Zip,
State,
Address,
City,
a.lLead
}).AsEnumerable()
.Where(i => i.Zip.ToString().Substring(0,5).Equals(i.lLead.ZipCode.Substring(0,5))
.Select(i => new
{
Name = i.AccountName
});