Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果包含的列表不包含给定的所有值,如何删除列表中的所有实例?请帮忙_C#_Asp.net_Linq - Fatal编程技术网

C# 如果包含的列表不包含给定的所有值,如何删除列表中的所有实例?请帮忙

C# 如果包含的列表不包含给定的所有值,如何删除列表中的所有实例?请帮忙,c#,asp.net,linq,C#,Asp.net,Linq,因此,我试图建立一个搜索系统,我需要浏览列表中的每一本“书”,并删除与给定“类型”不匹配的每一本。每本书都包含一个流派ID列表 我用过这个,我确信它曾经有用,但也许是我的想象力 books.RemoveAll(i => i.genres != null && !genres.All(x => i.genres.Any(y => x == y))); 有人知道如何实现这个功能吗 谢谢大家! 听起来你是说一本书有很多种类型,你想根据一个类型列表过滤一个图书列表,这

因此,我试图建立一个搜索系统,我需要浏览列表中的每一本“书”,并删除与给定“类型”不匹配的每一本。每本书都包含一个流派ID列表

我用过这个,我确信它曾经有用,但也许是我的想象力

books.RemoveAll(i => i.genres != null && !genres.All(x => i.genres.Any(y => x == y)));
有人知道如何实现这个功能吗


谢谢大家!

听起来你是说一本书有很多种类型,你想根据一个类型列表过滤一个图书列表,这样列表中的所有图书都有它们的所有类型

这个答案还假设
类型
类实现了
IComparable
。在本例中,
genres
是一个
列表


什么是“与给定类型不匹配”的意思?给出一些有类型的书籍的例子,以及它们不匹配/不匹配的类型列表。你是说书籍有很多类型,你只想返回那些所有类型都在
类型列表中的书籍吗?另外,在Linq中完全允许使用可读名称作为变量。我有3本书,其中一本有3种类型{'1','2','3}(我实际上将它们保存为id,但这可能并不重要),另一本书只有'2'类型,最后一本书有mo类型。当我试图用你写的内容删除所有不包含gennre'2'的书时,它只删除了第一本书,留下了另外两本书……哦,我修复了它。我替换了book.genres.Any(genre=>!genres.Contains(genre));带有genres.Any(genre=>!book.genres.Contains(genre));非常感谢你!如果您使用重现问题的示例代码更新了您的问题,这将非常有用。我只是在猜测你的数据结构是什么样子。我也不确定你到底想做什么,所以包括示例输入和预期输出也会很有帮助。是的,很抱歉,我是堆栈溢出新手,我不太熟悉正确的发帖礼仪,不过现在我的问题已经解决了,谢谢!)
public class Book
{
    public string Title;
    public List<string> Genres;
}
var genres = new List<string> {"Horror", "Action", "Adventure"};

var books = new List<Book>
{
    new Book {Title = "The Shining", Genres = new List<string> {"Horror", "Adventure"}},
    new Book {Title = "Sahara", Genres = new List<string> {"Action", "Adventure"}},
    new Book {Title = "The Odds", Genres = new List<string> {"Action", "Comedy"}}
};
books.RemoveAll(book =>
    book.Genres != null &&
    book.Genres.Any(genre => !genres.Contains(genre)));

// The last book is removed from the list, because 'genres' doesn't contain "Comedy"