简体   繁体   English

C# 使用 LINQ,从对象列表中创建一个新的对象列表,删除其属性在字符串列表中的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM