Можно ли создавать классы новых типов в Linq-to-Objects? - PullRequest
2 голосов
/ 23 марта 2012

Для создания и назначения классов на лету из других объектов я обычно использую LINQ.

Предположим, у меня есть IQueryable<ProductForCart> объект, выбранный из моей базы данных , и по какой-то причине мне нужно создать IQuaryable<Product>, где каждое Product свойство извлекается из ProductForCart.

Я просто делаю:

IQueryable<ProductForCart> productsForCart = ProductRepository.GetProductsForCart();

IQueryable<Product> products = productsForCart.Select(sc => new Product
                                              {
                                                 ProdId = sc.ProdId,
                                                 ProdName = sc.ProdName,
                                                 //other properties
                                              }

Это работает гладко. Но если у меня есть IList<ProductForCart> и IList<Product>, то выдается исключение времени выполнения:

Эта функция может быть вызвана только из LINQ to Entities.

Я не знал, что LinqToObjects не поддерживает такого рода назначения. Или я что-то упустил?

1 Ответ

1 голос
/ 23 марта 2012

Нельзя использовать SQLFunctions или EntityFunctions в запросе Linq-to-Objects.

Вам нужно будет заменить эти функции эквивалентным .net методом

...