LINQ: указанный член типа не поддерживается в LINQ - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь запустить оператор linq ниже. Я получаю следующее сообщение об ошибке:

Указанный тип члена CustomerID не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей.

Я прошел по коду, и это происходит, когда я беру запрос и пытаюсь конвертировать, используя "ToList ()".

Есть идеи? Как бы я переписал этот запрос, чтобы LINQ to Entities перестал жаловаться.

Steve

                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
                });

1 Ответ

2 голосов
/ 26 сентября 2011

Я считаю, что проблема в том, что вы не можете присоединиться к коллекции анонимных типов.

Переместите свойство PricingId в более позднее предложение let и присоединитесь непосредственно к Customers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...