我有一个名为Product:List
的自定义对象列表class Product
{
string Key1 {get; set;}
string Key2 {get; set;}
int Count1 {get; set;}
int Count2 {get; set;}
}
我正在组合多个产品列表,我需要创建一个新列表,其中包含每个Count属性的总和值。 例如,
List 1:
"Key1", "Key2", 1, 2
"Key2", "Key3", 3, 4
List 2:
"Key1", "Key2", 5, 6
"Key2", "Key3", 7, 8
所以我的新名单应该是:
New List:
"Key1", "Key2", 6, 8
"Key2", "Key3", 10, 12
有人可以帮我吗?
感谢。
答案 0 :(得分:2)
你可以这样做
pepperoni
<强>输出强>
peporini
其他资源
将指定集合的元素添加到结尾 列表。
Enumerable.GroupBy Method (IEnumerable, Func, Func)
根据指定的键对序列的元素进行分组 选择器功能并使用a为每个组投影元素 指定的功能。
Enumerable.Concat Method (IEnumerable, IEnumerable)
连接两个序列。
答案 1 :(得分:0)
List<Product> lst1 = new List<Product>();
List<Product> lst2 = new List<Product>();
lst1.Add(new Product() {Key1 = "K1",Key2 ="K2", Count1 =1, Count2=2 });
lst1.Add(new Product() { Key1 = "K2", Key2 = "K3", Count1 = 3, Count2 = 4 });
lst2.Add(new Product() { Key1 = "K1", Key2 = "K2", Count1 = 5, Count2 = 6});
lst2.Add(new Product() { Key1 = "K2", Key2 = "K3", Count1 = 7, Count2 = 8 });
// Way 1
var l = lst1.Join(lst2, l1 => l1.Key1, l2 => l2.Key1,
(lt1, lt2) => new Product { Key1 = lt1.Key1, Key2 = lt1.Key2, Count1 = lt1.Count1 + lt2.Count1, Count2 = lt1.Count2 + lt2.Count2 } ).ToList() ;
// Way 2
var result = lst1.Join(lst2, x => new { x.Key1, x.Key2 },
y => new { y.Key1, y.Key2 }, (x, y) =>
new Product { Key1 = x.Key1, Key2 = x.Key2, Count1 = x.Count1 + y.Count1, Count2 = x.Count2 + y.Count2 }).ToList();