0

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

问题型号:

public class QuestionModel {
    public string Question { get; set; }
    public string Answer { get; set; }
}

关键词:

List<string> SearchKeywords

问题:

List<QuestionModel> Questions

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

我已经走了这么远,但遇到了路障:

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)));

然而,这会返回一个布尔值。

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

4

2 回答 2

5

您使用了错误的 LINQ 方法,Where而不是All

Questions = questions.Where(x => ...);

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

根据究竟Questions是什么(看起来像一个属性,是什么类型的?),您可能必须用ToListor包裹它ToArray

于 2013-07-17T18:43:51.960 回答
1

第一个All是错误的。你需要Where

Questions = questions.Where(x => SearchKeywords.All(k => x.Question.Contains(k) || x.Answer.Contains(k))).ToList();

此外,作为Questionsa List<QuestionModel>,您需要ToList.

于 2013-07-17T18:45:26.703 回答