Значения типа 'collection [Edm.String (Nullable = True, DefaultValue =, MaxLength =, Unicode =, FixedLength =)]' не могут быть преобразованы в строку - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь объединить две таблицы Products и ProductImages и сохранить результат в другом классе ProductDisplay , в котором будет храниться несколько продуктов Id , Имя и первый ImageId , ImageName .

Если в таблице ProductImages нет изображения ProductDisplay будет содержать NoId и NoProductImage в списке.

Но этот Linq выдает исключение

  var products = (from p in db.Products
                   select new ProductDisplay
                   {
                       ProductId = p.Id,
                       Name = p.Name,
                       Image = (from ppi in db.ProductImages
                                       where ppi.ProductId == p.Id
                                       select ppi.Image == null ? "noproductimage.jpg" : ppi.Image).ToString(),
                        ProductImageId = (from ppi in db.ProductImages
                                         where ppi.ProductId == p.Id
                                         select ppi.Id.ToString() == null ? "NoId" : ppi.Id.ToString()).ToString()
                   }).ToList();

Я думаю,нижеприведенный код выдает исключение

      select ppi.Id.ToString() == null ? "NoId" : ppi.Id.ToString()).ToString()

, помогите пожалуйста ...

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вот ответ, но не удалось добавить «noproductimage.jpg» и «NoId».Но мой код будет работать с NULL и 0 соответственно для "noproductimage.jpg" и "NoId" .

    var product = from p in db.Products
                select new 
                {
                    ProductId = p.Id,
                    Name = p.Name,
                    Image = (from ppi in db.ProductImages
                             where ppi.ProductId == p.Id
                             select ppi.Image).FirstOrDefault(),
                    ProductImageId = (from ppi in db.ProductImages
                                      where ppi.ProductId == p.Id
                                      select ppi.Id).FirstOrDefault()
                };
0 голосов
/ 11 июня 2018

У вас есть помеченный объект-фреймворк, так почему бы вам просто:

var myList = db.Products.Include("ProductImages").ToList();

и затем выбрать из myList, используя технику отображения.Есть ли несколько изображений на один продукт?

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