C# 无法隐式转换类型System.Collection.Generic.IEnumberable

C# 无法隐式转换类型System.Collection.Generic.IEnumberable,c#,asp.net,linq,C#,Asp.net,Linq,我在Linq声明中收到此错误--- 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“hcgames.ObjectClasses.ShoppingCart.shoppingcartaddon”。存在显式转换(是否缺少强制转换?) 从这个查询 ShoppingCartItems items = Cart.GetAllItems(); ShoppingCartCartAddons addons = Cart.GetA

我在Linq声明中收到此错误---

无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“hcgames.ObjectClasses.ShoppingCart.shoppingcartaddon”。存在显式转换(是否缺少强制转换?)

从这个查询

        ShoppingCartItems items = Cart.GetAllItems();
        ShoppingCartCartAddons addons = Cart.GetAllAddons();

      var  stuff = from x in items
                    select new ShoppingCartItem()
                    {
                        ProductID = x.ProductID,
                        Quantity = x.Quantity,
                        Name = x.Name,
                        Price = x.Price,
                        Weight = x.Weight,
                        Addons =  (from y in addons
                                  where y.ShoppingCartItemID == x.ID
                                  select y)
                    };
我不知道如何正确地投下这个。有什么建议吗


谢谢你的帮助

我在黑暗中拍摄,因为我不知道什么类型
ShoppingCartItem.Addons
,但从错误判断,我想说它期望的类型是
hcgames.ObjectClasses.ShoppingCart.shoppingCartAddon


您的LINQ查询正在变成
IEnumerable
。你可以将
.FirstOrDefault()
添加到LINQ查询中,看看这是否能解决问题。

由于我不知道
ShoppingCartItem.Addons
是什么类型,所以我一直在暗中拍摄,但从错误判断,我认为应该是
hcgames.ObjectClasses.ShoppingCart.ShoppingCartAddon


您的LINQ查询正在变成
IEnumerable
。您可以将
.FirstOrDefault()
添加到LINQ查询中,以查看这是否会清除问题。

考虑到您发布的代码,至少有一种方法可以解决它。由于ShoppingCartAddons集合没有任何其他功能,因此更简单、更不优雅的方法是按如下方式修改您的
ShoppingCartItem.Addons
签名:

namespace hcgames.ObjectClasses.ShoppingCart 
{ 
    [Serializable] 
    public class ShoppingCartItem 
    {
        public ShoppingCartItem(); 
        public ShoppingCartItem(DataRow dr); 
        public IEnumerable<ShoppingCartCartAddon> Addons { get; set; } 
        public string CartID { get; set; } 
        public int ID { get; set; } 
        public string Image { get; set; } 
        public string Name { get; set; } 
        public string Price { get; set; } 
        public long ProductID { get; set; } 
        public int Quantity { get; set; } 
        public decimal Weight { get; set; } 
    }
}

命名空间hcgames.ObjectClasses.ShoppingCart
{ 
[可序列化]
公共类购物车项目
{
公共购物车项目();
公共购物车项目(DataRow dr);
公共IEnumerable插件{get;set;}
公共字符串CartID{get;set;}
公共int ID{get;set;}
公共字符串图像{get;set;}
公共字符串名称{get;set;}
公共字符串Price{get;set;}
公共长ProductID{get;set;}
公共整数数量{get;set;}
公共十进制权重{get;set;}
}
}
说明:您基本上是在尝试从
IEnumerable
初始化
Collection
实现,
shoppingcartaddons
,因此编译器会出错


否则,您可以为
shoppingcartaddons
定义一个构造函数,它接受
IEnumerable
来初始化自身。

考虑到您发布的代码,至少有一种方法可以解决它。由于ShoppingCartAddons集合没有任何其他功能,因此更简单、更不优雅的方法是按如下方式修改您的
ShoppingCartItem.Addons
签名:

namespace hcgames.ObjectClasses.ShoppingCart 
{ 
    [Serializable] 
    public class ShoppingCartItem 
    {
        public ShoppingCartItem(); 
        public ShoppingCartItem(DataRow dr); 
        public IEnumerable<ShoppingCartCartAddon> Addons { get; set; } 
        public string CartID { get; set; } 
        public int ID { get; set; } 
        public string Image { get; set; } 
        public string Name { get; set; } 
        public string Price { get; set; } 
        public long ProductID { get; set; } 
        public int Quantity { get; set; } 
        public decimal Weight { get; set; } 
    }
}

命名空间hcgames.ObjectClasses.ShoppingCart
{ 
[可序列化]
公共类购物车项目
{
公共购物车项目();
公共购物车项目(DataRow dr);
公共IEnumerable插件{get;set;}
公共字符串CartID{get;set;}
公共int ID{get;set;}
公共字符串图像{get;set;}
公共字符串名称{get;set;}
公共字符串Price{get;set;}
公共长ProductID{get;set;}
公共整数数量{get;set;}
公共十进制权重{get;set;}
}
}
说明:您基本上是在尝试从
IEnumerable
初始化
Collection
实现,
shoppingcartaddons
,因此编译器会出错


否则,您可以为
shoppingcartaddons
定义一个构造函数,它接受
IEnumerable
来初始化自身。

您可以发布
shoppingcartaddons
shoppingcartaddons.Addons
签名吗?命名空间hcgames.ObjectClasses.ShoppingCart{[Serializable]公共类ShoppingCartItem{public ShoppingCartItem();public ShoppingCartItem(DataRow dr);public ShoppingCartAddons插件{get;set;}公共字符串CartID{get;set;}公共int ID{get get;set;}公共字符串图像{get set;}公共字符串名称{get get;set;}公共字符串Price{get;set;}public long ProductID{get;set;}公共int数量{get;set;}公共十进制权重{get;set;}}使用系统;使用System.Collections.ObjectModel;命名空间hcgames.ObjectClasses.ShoppingCart{[Serializable]公共类shoppingcartaddons:Collection{public shoppingcartaddons();}}命名空间hcgames.ObjectClasses.ShoppingCart{[Serializable]公共类shoppingcartaddon{public shoppingcartaddon();public shoppingcartaddon(DataRow dr);public string LabelText{get;set;}public string Name{get;set;}public decimal Price{get;set;}public int ProductAddonID{get;set;}public decimal Quantity{get;set;}public long ShoppingCartAddonID{get;set;}public long ShoppingCartItemID{get;set;}public decimal Weight{get;set;}}}}}}Aight,编辑了我的答案,为了将来参考,您可以编辑您的问题以添加更多详细信息(和闪亮的格式化代码)你可以发布
shoppingcartaddons
shoppingcartimes.Addons
signatures吗?命名空间hcgames.ObjectClasses.ShoppingCart{[Serializable]公共类shoppingcartimes{public shoppingcartimes();公共shoppingcartimes(DataRow dr);public shoppingcartaddons插件{get;set;}公共字符串CartID{get;set;}公共int-ID{get;set;}公共字符串图像{get;set;}公共字符串名称{get;set;}公共字符串价格{get;set;}公共长产品ID{get;set;}