从列表中删除不包含数组中唯一单词的所有项目

时间:2017-06-26 13:18:48

标签: c# razor logic

我有一个string[]个唯一的单词和一个IQueryable<>的唯一类,其中包含一个字符串。我想从IQueryable<>中删除其字符串变量不包含其中一个唯一单词的所有项目。我怎样才能在运行时不会严重耗尽我的代码呢?

其中一个变量是string Name。我有IQueryable<Project>string[] words。我想创建一个 new IQueryable<Project>,其中所有项目的名称至少包含单词数组中的一个单词。

我不知道在没有循环IQueryable两次的情况下如何做到这一点(一次标记Projects,其中Name包含数组中的单词,并且再次将Projects移到新的IQueryable中,对于大IQueryable来说,这将是一个严重的时间压力。

1 个答案:

答案 0 :(得分:1)

如果Name属性只是一个包含多个单词的字符串:

var newQueryable = queryable
       .AsEnumerable()
       .Where(project => words
                .Intersect(project.Name.Split(' '), StringComparer.OrdinalIgnoreCase)
                .Any())
       .AsQueryable();

如果Name已经是一个包含所有单词的数组,则不要使用split函数。