C# 将对象列表强制转换为另一个列表
我有两个模型课:C# 将对象列表强制转换为另一个列表,c#,.net,C#,.net,我有两个模型课: public class SalesItem { public string ProductName { get; set; } public double UnitPrice { get; set; } public int Quantity { get; set; } } public class ProductItem : INotifyPropertyChanged { public string ProductName { get; set;
public class SalesItem
{
public string ProductName { get; set; }
public double UnitPrice { get; set; }
public int Quantity { get; set; }
}
public class ProductItem : INotifyPropertyChanged
{
public string ProductName { get; set; }
public double UnitPrice { get; set; }
}
我有一个SalesItem的列表,列出产品,如何将其转换为销售列表
编辑
List<ProductItem> salesList = new List<ProductItem>();
List<SalesItem> salesItem = salesList.Cast<SalesItem>();
错误:
Connot implicitly convert type 'System.Collections.Generic.IEnumerable<Model.SalesItem>' to 'System.Collections.Generic.List<Model.SalesItem>'. An explicit conversion exists (are you missing a cast?
在您给出的示例中,您不能在这两种类型之间进行强制转换,因为它们彼此没有任何共同之处。正确的方法是先有一个baseItem类,然后有一个从baseItem继承的derivedItem类。然后你可以做:
List<baseItem> baseList;
List<derivedItem> derivedList = baseList.Cast<derivedItem>();
这通常被称为向下转换,通常是代码中不正确层次结构的指示器,因此我建议限制其使用。在您给出的示例中,您不能在这两种类型之间进行转换,因为它们彼此没有任何共同点。正确的方法是先有一个baseItem类,然后有一个从baseItem继承的derivedItem类。然后你可以做:
List<baseItem> baseList;
List<derivedItem> derivedList = baseList.Cast<derivedItem>();
这通常被称为向下投射,通常是代码中不正确层次结构的指示器,因此我建议限制其使用。您需要将SalesItem更改为从ProductItem继承,然后可以使用LINQ,如下所示:
List<ProductItem> products;
IEnumerable<SalesItem> salesItems = products.Cast<SalesItem>();
您需要将SalesItem更改为从ProductItem继承,然后可以使用LINQ,如下所示:
List<ProductItem> products;
IEnumerable<SalesItem> salesItems = products.Cast<SalesItem>();
久经考验
包含命名空间
using System.Linq;
然后
List<ProductItem> yourProductlist = new List<ProductItem>();
yourProductlist.Add(new ProductItem() { ProductName = "A", UnitPrice = 50 });
yourProductlist.Add(new ProductItem() { ProductName = "B", UnitPrice = 150 });
List<SalesItem> yourSaleslist = yourProductlist.Select(x =>
new SalesItem() { ProductName = x.ProductName,
UnitPrice = x.UnitPrice }).ToList();
看到它工作了吗
如果ProductItem继承自SalesItem类,则强制转换将起作用
包含命名空间
using System.Linq;
然后
List<ProductItem> yourProductlist = new List<ProductItem>();
yourProductlist.Add(new ProductItem() { ProductName = "A", UnitPrice = 50 });
yourProductlist.Add(new ProductItem() { ProductName = "B", UnitPrice = 150 });
List<SalesItem> yourSaleslist = yourProductlist.Select(x =>
new SalesItem() { ProductName = x.ProductName,
UnitPrice = x.UnitPrice }).ToList();
看到它工作了吗
如果ProductItem继承自SalesItem类,则强制转换将起作用。在这里,您可以定义defaultQuantity的值,因为它在ProductItem中不存在
这里可以定义defaultQuantity的值,因为它不存在于ProductItem中
如何填写销售项目的数量ProductItem和SalesItem类是否相关(例如一个继承自另一个)?如果是,如何填写?如何填写销售项目的数量ProductItem和SalesItem类是否相关,例如一个类从另一个类继承?如果是,如何操作?除非在.Cast之后添加.ToList。问题是ProductItem inherit INotifyPropertyChanged。除非在.Cast之后添加.ToList,否则此操作不起作用。问题是ProductItem inherit INotifyPropertyChanged。除非在.Cast之后添加.ToList,否则此操作不起作用。除非在.Cast之后添加.ToList演员阵容。