LINQ:搜索2个属性以获取字符串列表

Gre*_*g B 0 c# linq asp.net-mvc-4

我的代码的不同部分有以下内容:

QuestionModel:

public class QuestionModel {
    public string Question { get; set; }
    public string Answer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

关键词:

List<string> SearchKeywords
Run Code Online (Sandbox Code Playgroud)

问题:

List<QuestionModel> Questions
Run Code Online (Sandbox Code Playgroud)

我想要实现的是从所有问题列表中搜索并保留所有具有所有关键字的问题.

我走了这么远,但遇到了一个障碍:

var questions = GetAllQuestions(); //returns all questions as a List<QuestionModel>
Questions = questions.All(x => SearchKeywords.All(k => x.Question.Contains(k) || x.Answer.Contains(k)));
Run Code Online (Sandbox Code Playgroud)

然而,这会返回一个bool.

任何帮助或指示将不胜感激.

Jon*_*Jon 5

您正在使用错误的LINQ方法,Where而不是All:

Questions = questions.Where(x => ...);
Run Code Online (Sandbox Code Playgroud)

All告诉你集合中的每个项是否满足条件(布尔结果); Where过滤满足条件的元素(过滤后的集合结果).

取决于究竟Questions是什么(看起来像一个属性,什么类型?),你可能需要用ToList或包装它ToArray.