C# 在字符串中搜索引用短语和其他关键字的匹配项

C# 在字符串中搜索引用短语和其他关键字的匹配项,c#,.net,search,C#,.net,Search,作为我试图完成的一个示例,下面是一些代码,它使用名为句子的字符串属性构建书籍列表 public class Book { public string Sentence { get; set; } } Book book1 = new Book() { Sentence = "The quick brown fox jumps over the lazy dog" }; Book book2 = new Book() { Sentence = "The quick brown frog

作为我试图完成的一个示例,下面是一些代码,它使用名为
句子
的字符串属性构建书籍列表

public class Book {
    public string Sentence { get; set; }
}

Book book1 = new Book() { Sentence = "The quick brown fox jumps over the lazy dog" };
Book book2 = new Book() { Sentence = "The quick brown frog jumps over the lazy sloth" };

List<Book> books = new List<Book>();

books.Add(book1);
books.Add(book2);

这不适用于案例2。我现在使用的代码只是查找1个匹配项,如果它得到1个匹配项,则会考虑找到的项。

我认为您可能需要
All()
LINQ方法,请尝试以下操作:

var query = from b in books
            where (!string.IsNullOrEmpty(b.Sentence) && searchWords.All(word => b.Sentence.Contains(word)))
            select b;

而不是重新发明轮子,我会用。您甚至不需要磁盘上的索引。所有索引+搜索都可以在内存中完成(使用Lucene的RamDirectory)

感谢您的回复。我查看了他们的页面,但找不到任何关于如何使用它的文档。“入门”页面没有任何用处。@Ek0nomik+all Lucene.Java文档感谢您的回复。你说得对,这就是我解决我的例子所需要的。我可以查看Lucene.NET,但这回答了我的问题。
var query = from b in books
            where (!string.IsNullOrEmpty(b.Sentence) && searchWords.All(word => b.Sentence.Contains(word)))
            select b;