[英]C# using LINQ, from a list of objects, create a new list of objects, removing ones whose property is in a list of stings
I have an object like this -我有一个这样的对象 -
public MyObject
{
public int Id { get; set; }
public string MyType { get; set; }
}
a list of those objects -这些对象的列表 -
public List<MyObject> MyObjectList { get; set; }
and a list of string like this -和这样的字符串列表 -
public List<string> MyTypeList { get; set; }
Using LINQ on MyObjectList
, I want to create a list of MyObject
removing any MyObject
that has a MyObject.MyType
that is in the MyTypeList
.在
MyObjectList
上使用 LINQ,我想创建一个MyObject
列表,删除在MyTypeList
中具有MyObject.MyType
任何MyObject
。
Something like this (here are some unsuccessful attempts) -这样的事情(这里有一些不成功的尝试)-
List<MyObject> MyObjectListNEW = MyObjectList.Select(i => i.MyType).Except(MyTypeList).ToList();
List<MyObject> MyObjectListNEW = MyObjectList.Where(i => i.MyType.Except(MyTypeList));
This should work:这应该有效:
var MyObjectList = new List<MyObject>();
var MyTypeList = new List<string>();
var results = MyObjectList.Where(m => !MyTypeList.Any(t => m.MyType == t)).ToList();
尝试这个
var results = MyObjectList.Where(m => !MyTypeList.Contains(m.MyType)).ToList();
我认为应该是
var results = MyObjectList.Where(m => ! MyTypeList.Contains(m.MyType)).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.