首页 > 解决方案 > 'collection[Edm.String(Nullable=True,DefaultValue=,MaxLength=,Unicode=,FixedLength=)]' 类型的值无法转换为字符串

问题描述

我尝试加入两个表ProductsProductImages并将结果存储到另一个类ProductDisplay中,它将存储多个产品 IdName和第一个ImageIdImageName

如果ProductImages表中没有 Image,则ProductDisplay将在列表中包含NoIdNoProductImage

但是这个 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()

请帮忙...

标签: c#entity-frameworklinq

解决方案


这是一个答案,但无法添加“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()
                };

推荐阅读