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

时间:2018-06-11 16:58:37

标签: c# entity-framework linq

我尝试加入两个表产品 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 :(得分:0)

你有实体框架标记,所以为什么不是你只是:

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

然后使用映射技术从myList中选择。每个产品是否有多个图像?

答案 1 :(得分:0)

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