LINQ:在2个属性中搜索字符串列表
本文关键字:搜索 字符串 列表 属性 2个 LINQ | 更新日期: 2023-09-27 18:22:49
我在代码的各个部分都有以下内容:
问题模型:
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)));
然而,这会返回一个bool。
如有任何帮助或指示,我们将不胜感激。
您使用了错误的LINQ方法,您需要Where
而不是All
:
Questions = questions.Where(x => ...);
All
告诉集合中的每个项是否都满足一个条件(布尔结果);Where
过滤满足条件的元素(过滤后的收集结果)。
根据Questions
到底是什么(看起来像一个属性,属于什么类型?),您可能必须用ToList
或ToArray
来包装它。
第一个All
错误。您需要Where
:
Questions = questions.Where(x => SearchKeywords.All(k => x.Question.Contains(k) || x.Answer.Contains(k))).ToList();
此外,由于Questions
是List<QuestionModel>
,因此需要ToList
。