代码之家  ›  专栏  ›  技术社区  ›  TheGeekYouNeed

无法隐式转换类型System.Collection.Generic.IEnumerable

  •  1
  • TheGeekYouNeed  · 技术社区  · 14 年前

    我在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)
                        };
    

    我不知道如何正确地投射这个。有什么建议吗?

    谢谢你的帮助!

    2 回复  |  直到 14 年前
        1
  •  0
  •   Dynami Le Savard    14 年前

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

    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; } 
        }
    }
    

    解释:您基本上正在尝试初始化 Collection<ShoppingCartCartAddon> 实施, ShoppingCartCartAddons 来自 IEnumerable<ShoppingCartCartAddon> 这样编译器就变成了行家。

    否则,您可以为 购物车加载项 它接受一个 IEnumerable<购物车加载项> 把自己初始化。

        2
  •  1
  •   Justin Niessner    14 年前

    我在黑暗中射击,因为我不知道是哪种类型 ShoppingCartItem.Addons 是的,但从错误的角度来看,我认为应该是 hcgames.ObjectClasses.ShoppingCart.ShoppingCartCartAddon

    您的LINQ查询正在 IEnumerable<ShoppingCartCartAddon> . 你可以添加 .FirstOrDefault() 到Linq查询,查看是否清除了问题。