/ / LINQ: Указаният член на типа не се поддържа в LINQ - c #, asp.net-mvc, linq-to-entity.

LINQ: посоченият член тип не се поддържа в LINQ-c #, asp.net-mvc, linq-to-entities

Опитвам се да стартирам изявлението linq по-долу. Получавам следното съобщение за грешка:

Указаният член тип "CustomerID" не се поддържа в LINQ към Entities. Поддържат се само инициализатори, членове на обекти и свойства за навигация на обекти.

Преминах през кода и това се случва, когато вземам заявка и се опитвам да конвертирам с помощта на "ToList ()".

Някакви идеи? Как бих пренаписал тази заявка, така че LINQ to Entities да не се оплаква.

стив

                var query = from l in db.QBPOLines
join t in db.tblJobTasks on l.POID equals t.PurchaseOrderID
join j in db.tblJobTasks on t.JobID equals j.JobID
join c in
(
from c in db.tblCustomers
select new
{
c.CustomerID,
PricingID = c.PricingID == null || c.PricingID == 0 ? 1 : c.PricingID
}
) on j.CustomerID equals c.CustomerID
join m in db.QBItemsPriceMaps on l.Item equals m.ItemName
join s in db.tblCustomerPricingSchemes on c.CustomerID equals s.CustomerID into g1
from s in g1.DefaultIfEmpty()
join p in db.tblPricingSchemes on l.LangPairs equals p.PSLangPairID into g2
from p in g2.DefaultIfEmpty()
where t.JobID == jobID
&& s.PSLangPairID == l.LangPairs
&& p.PSDescID == c.PricingID
select new
{
j.JobID,
l.Item,
l.LangPairs,
l.Qty,
Rate = s.PSLangPairID != null
? (m.CustomerPriceField == "PS_FZ50" ? s.PS_FZ50 :
m.CustomerPriceField == "PS_FZ75" ? s.PS_FZ75 :
m.CustomerPriceField == "PS_FZ85" ? s.PS_FZ85 :
m.CustomerPriceField == "PS_FZ95" ? s.PS_FZ95 : null)

: (m.CustomerPriceField == "PS_FZ50" ? p.PS_FZ50 :
m.CustomerPriceField == "PS_FZ75" ? p.PS_FZ75 :
m.CustomerPriceField == "PS_FZ85" ? p.PS_FZ85 :
m.CustomerPriceField == "PS_FZ95" ? p.PS_FZ95 : null)
};

List<tblJobManagementLineItem> list = query.ToList().ConvertAll(i => new tblJobManagementLineItem
{
JobID = i.JobID,
LineItemDescr = i.Item,
LanguagePairID = i.LangPairs,
SourceWordCount = (int)i.Qty,
QtyToInvoice = (int)i.Qty,
//item.JobInvoiceID <--- Implement later
Rate = i.Rate
});

Отговори:

2 за отговор № 1

Вярвам, че проблемът е, че не можете да се присъедините към колекция от анонимни типове.

Преместете PricingId по-късно let клауза и се присъединявате директно към нея Customers.