查找两个基因列表之间的差异
本文关键字:之间 列表 两个 查找 | 更新日期: 2023-09-27 18:11:37
Hai我的问题是我有两个通用对象列表
List<plan> previousYear;
List<plan> Nextyear;
我需要用一种自定义的方式得到它们之间的区别
例如:
public class plan{
int budget;
int expense;
int savings
}
List<plan> previousYear = new List<plan>() { new plan ( 100, 200, 300 ),
new plan( 400, 500, 600 ) };
List<plan> nextYear = new List<plan>() { new plan ( 200, 200, 300 ),
new plan ( 400, 600, 700 ) };
应用差异后,我需要得到像
这样的结果第一个对象第一个属性更改为200
第二个对象的第二个属性更改为600
第二个对象的第三属性更改为700
我想以列表的形式得到上面的结果。
我不知道用来解决这个问题的数据结构和方法(比如linq)
您可以使用Zip方法:
var result = previousYear.Zip(nextYear,
(p, n) =>
new plan(Math.Max(p.budget, n.budget),
Math.Max(p.expense, n.expense),
Math.Max(p.savings, n.savings)))
.ToList();
首先可以为您的自定义类Plan
重载-
操作符,如下所示:
public class Plan
{
public int Budget { get; set; }
public int Expense{ get; set; }
public int Savings { get; set; }
public Plan(int budget, int expense, int savings)
{
Budget = budget;
Expense = expense;
Savings = savings;
}
public static Plan operator -(Plan p1, Plan p2)
{
return new Plan(p1.Budget - p2.Budget,
p1.Expense - p2.Expense,
p1.Savings - p2.Savings);
}
}
然后你可以使用LINQ的Zip
方法来得到你想要的,如下所示:
var result = previousYear.Zip(nextYear, (p,n) => p-n);
有关Zip
方法的更多信息,请参阅此处