我有以下几类:
struct UserRecord
{
//--- common settings
int login; // login
int leverage; // leverage
int enable; // enable
}
我有两个清单:
List<UserRecord> base_data = new List<UserRecord>();
base_data.Add(new UserRecord(){login = 1, leverage = 1000, enable = 0});
base_data.Add(new UserRecord(){login = 2, leverage = 100, enable = 0});
base_data.Add(new UserRecord(){login = 3, leverage = 10, enable = 1});
base_data.Add(new UserRecord(){login = 4, leverage = 10000, enable = 0});
List<UserRecord> snapshot_data= new List<UserRecord>();
snapshot_data.Add(new UserRecord(){login = 1, leverage = 1000, enable = 1});
snapshot_data.Add(new UserRecord(){login = 2, leverage = 100, enable = 0});
snapshot_data.Add(new UserRecord(){login = 3, leverage = 10, enable = 1});
snapshot_data.Add(new UserRecord(){login = 4, leverage = 10000, enable = 1});
我的目标是筛选记录,并在新列表中获得两个记录,这两个记录具有不同的字段,在本例中只有字段“enable”不同。
var filtered_data = new List<UserRecord>(); // here records with login 1 and 4 should go.
你有什么建议吗?
1条答案
按热度按时间5vf7fwbs1#
您可以从 * System.Linq * 中查找
Enumerable.Except()
,以找出这两个可枚举对象之间的区别。Demo @ .NET Fiddle
另一种方法是,如果您只想基于不同列表中具有相同
login
和leverage
的项来比较enable
中的差异。您需要通过键联接两个列表,并使用不同的
enable
值从第一个列表中查询记录。Demo Solution 2 @ .NET Fiddle