如何从列表1中获取list2中不存在的字符串子集?

VNa*_*haM 2 .net c#

我有两个清单

list 1 = { "fred", "fox", "jumps", "rabbit"};
list2 ={"fred", "jumps"}
Run Code Online (Sandbox Code Playgroud)

现在我需要得到一个list3,其中包含list2中不存在的list1元素.列表3应该是

list3  = {"fox", "rabbit"};
Run Code Online (Sandbox Code Playgroud)

我可以通过使用循环手动执行此操作,但我想知道是否有类似list3 = list1 - list2或其他更好的方式比使用循环.

谢谢

Mar*_*ers 10

如果您使用的是.NET 3.5或更高版本,则可以使用Enumerable.Except:

var result = list1.Except(list2);
Run Code Online (Sandbox Code Playgroud)

如果你想要它作为一个列表:

List<string> list3 = list1.Except(list2).ToList();
Run Code Online (Sandbox Code Playgroud)

对于旧版本的.NET,您可以将list1中的字符串作为键插入字典中,然后从list2中删除字符串,然后将结果留在字典中的键.

Dictionary<string, object> d = new Dictionary<string, object>();
foreach (string x in list1)
    d[x] = null;
foreach (string x in list2)
    d.Remove(x);
List<string> list3 = new List<string>(d.Keys);
Run Code Online (Sandbox Code Playgroud)