Linq匹配字符串列表

时间:2013-04-10 06:03:43

标签: c# linq

我想使用linq比较值。

数据选项:A,B,C,D

(原创)我的数据:A,B,C

(修改)我的数据:B,D

我的数据:A - 删除,B - 不更改,C - 删除,D - 添加

Linq表达式如何表达呢?

数据类型是List

2 个答案:

答案 0 :(得分:3)

听起来你可能想要LINQ set operations

var added = modified.Except(original);
var deleted = original.Except(modified);
var unchanged = modified.Intersect(original);

当然,假设您不关心订购。毫无疑问,更有效的方法是找到这些 - 但除非你真的需要担心性能,否则我会以此为出发点。

答案 1 :(得分:2)

我认为你正在寻找这样的东西:

var option =   new[] {"A", "B", "C", "D"};
var original = new[] {"A", "B", "C"};
var modify =   new[] {"B", "D"};

var deleted = original.Except(modify);        // A, C
var added   = modify.Except(original);        // D
var not_changed = modify.Intersect(original); // B