从Key值对中删除所有与列表中元素相等的元素?

时间:2018-01-09 15:33:38

标签: c# .net linq lambda

我有两个清单

static List<dynamic> List1= new List<dynamic>();
list<string> List2

List1是{Message='asdasd',Mobilenum=995955}

如果列表2中的值在list1中,我想从List1中删除所有元素吗?

我已经这样做了但是没有用 List1.RemoveAll(c => list2.ToList().Exists(n => n.Mobilenum== c.Values));

2 个答案:

答案 0 :(得分:0)

List1.RemoveAll(c => List2.Contains(c.Mobilenum));

但用实际类型替换dynamic。通常你不需要使用它。如果它是匿名类型并且您必须传递此列表,请考虑使用这些属性实现新类型。

答案 1 :(得分:0)

首先,创建一个类型而不是使用dynamic

public class MyType
{
   public string Message;
   public string Mobilenum;
}

然后,你可以这样做:

var List1 = new List<MyType>();
// ...build your list 
var List2 = new List<string>();
// ...build your other list
var res = List1.Where(x => !List2.Contains(x.Mobilenum));

避免使用删除,除非您确定要丢弃信息,而不是仅仅为特定用途“过滤”它。