Linq to SQL пытается выполнить левое соединение с DefaultIfEmpty (), что вызывает неподдерживаемую перегрузку, используемую для оператора запроса DefaultIfEmpty. ошибка - PullRequest
0 голосов
/ 13 декабря 2011

Это первый раз, когда я пытался выполнить левое соединение через linq, я просмотрел переполнение стека и Google, но все, что я пробовал, не сработало (вполне возможно, из-за моего собственного непонимания). Я пытаюсь сделать следующий запрос:

IQueryable<MyType> pQ = (from prd in dc.ProductDatas 
join cc in dc.CategoryProducts.DefaultIfEmpty(defaultCP) 
on prd.ProductID equals cc.ProductID 
where cc.CatID == CatID
orderby cc.OrdWithinInCategory 
select prd);

Я определил defaultCP как:

CategoryProduct defaultCP = new CategoryProduct {ID = 1,CatID = CatID, OrdWithinInCategory = 999};

Я получаю следующую ошибку:

Неподдерживаемая перегрузка, используемая для оператора запроса DefaultIfEmpty.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.NotSupportedException: неподдерживаемая перегрузка, используемая для оператора запроса 'DefaultIfEmpty'.

Есть ли что-то очевидное, что я делаю неправильно в своем коде, или мне нужно полностью попробовать другой подход. Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 27 февраля 2015

Использовать AsEnumerable ().

CategoryProduct defaultCP = new CategoryProduct {ID = 1,CatID = CatID, OrdWithinInCategory = 999};

IQueryable<MyType> pQ = (from prd in dc.ProductDatas 
                        join cc in dc.CategoryProducts.DefaultIfEmpty(defaultCP) 
                           on prd.ProductID equals cc.ProductID 
                        where cc.CatID == CatID
                        orderby cc.OrdWithinInCategory 
                        select prd)
               .AsEnumerable()
               .DefaultIfEmpty(defaultCP).First();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...