我有一个string[]
个唯一的单词和一个IQueryable<>
的唯一类,其中包含一个字符串。我想从IQueryable<>
中删除其字符串变量不包含其中一个唯一单词的所有项目。我怎样才能在运行时不会严重耗尽我的代码呢?
其中一个变量是string Name
。我有IQueryable<Project>
和string[] words
。我想创建一个 new IQueryable<Project>
,其中所有项目的名称至少包含单词数组中的一个单词。
我不知道在没有循环IQueryable
两次的情况下如何做到这一点(一次标记Projects
,其中Name
包含数组中的单词,并且再次将Projects
移到新的IQueryable
中,对于大IQueryable
来说,这将是一个严重的时间压力。
答案 0 :(得分:1)
如果Name属性只是一个包含多个单词的字符串:
var newQueryable = queryable
.AsEnumerable()
.Where(project => words
.Intersect(project.Name.Split(' '), StringComparer.OrdinalIgnoreCase)
.Any())
.AsQueryable();
如果Name已经是一个包含所有单词的数组,则不要使用split函数。