c# - 如何将一个列表复制到另一个具有 C# 中具有附加属性的对象的列表?(没有foreach)
问题描述
我需要将一个对象列表复制到另一个列表中,但是,第二个列表具有其他属性(基本上,第一个列表是第二个列表的子集)。下面是一个示例,说明如何为类 Product 和另一个类 ProductExt 执行 foreach 循环,该类继承自 product 并向其添加另一个属性。-- 这是我需要做的一个简略版本 --
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
//note there are 78 more product properties!
}
public class ProductExt : Product
{
public int FirstVariantId { get; set; }
}
以及如何使用 foreach 完成的示例(但我想在 Linq 中执行此操作,但不确定如何执行):
List<Product> products = new List<Product>();
products.Add(new Product { Id = 1, Name = "widget a" });
products.Add(new Product { Id = 2, Name = "widget b" });
products.Add(new Product { Id = 3, Name = "widget c" });
products.Add(new Product { Id = 4, Name = "widget d" });
products.Add(new Product { Id = 5, Name = "widget e" });
products.Add(new Product { Id = 6, Name = "widget f" });
products.Add(new Product { Id = 7, Name = "widget g" });
List<ProductExt> productExts = new List<ProductExt>();
// want to copy products into productExts list with a default value of 0 for FirstVariantId
foreach(var p in products)
{
var px = new ProductExt();
px.Id = p.Id;
px.Name = p.Name;
px.FirstVariantId = 0;
productExts.Add(px);
}
有没有办法在 Linq 中做到这一点(使用默认值)?
解决方案
尝试这个 :
List<ProductExt> productExts = products.select(product=> new ProductExt()
{
Name = product.Name,
// another properties
}).Tolist();
如果您不为任何属性赋值,则将默认值设置为该属性。(示例:对于 int 属性 => 0)
推荐阅读
- node.js - 过滤 node.js (express, mongoose) 应用
- javascript - chrome 扩展构建(HTML 文本到剪贴板保护程序)
- java - 将最小和最大移动到链表的头部和尾部
- c# - 当数据源中的两列匹配时如何过滤网格视图
- image - 无法消费 Rgba
Rust 中的(无方法) - python - 如何从字符串中提取数字(年份)?
- flutter - 升级到 XCode 版本 12 后出现新的构建系统错误
- mysql - 在 SQL 中对具有相似名称的列求和
- angular - 如何可选地提供拦截器
- c# - 加载资源失败:服务器响应状态为 404 () - 图像未从数据库 ASP.NET C# 加载