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

C# 从列表中删除不包含数组中唯一单词的所有项目,c#,razor,logic,C#,Razor,Logic,我有一个唯一单词的string[],还有一个唯一类的IQueryable,它包含一个字符串。我想从IQueryable中删除其字符串变量不包含唯一单词的所有项目。我怎样才能在运行时不严重消耗代码 其中一个变量是字符串名。我有一个IQueryable和一个string[]words。我想创建一个新的IQueryable,其中项目的所有名称至少包含单词数组中的一个单词 我不知道如何准确地执行此操作,而不必在IQueryable中循环两次(一次是标记项目,该项目的名称在数组中包含一个单词,另一次是将这

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

其中一个变量是
字符串名
。我有一个
IQueryable
和一个
string[]words
。我想创建一个新的
IQueryable
,其中项目的所有名称至少包含单词数组中的一个单词


我不知道如何准确地执行此操作,而不必在
IQueryable
中循环两次(一次是标记
项目,该项目的
名称在数组中包含一个单词,另一次是将这些
项目
移动到新的
IQueryable
)对于大型
IQueryable
来说,这将是一个严重的时间紧张。

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

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

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

您应该发布您正在尝试的代码以及它将抛出的错误。@dcg我甚至不知道该尝试什么,因为我不知道如何执行此操作。您能更精确一点吗。我对你的描述有点困惑。你的液体容器是液体容器吗?在哪些项上应删除元素等@LionelD请参阅我的编辑此页面告诉您如何从IQueryable中删除:这是一个开始,但项目名称有多个单词我尝试了这一点,我的代码抛出了异常
{“LINQ to Entities无法识别方法'System.Collections.Generic.IEnumerable`1[System.String]Intersect[String](System.Collections.Generic.IEnumerable`1[System.String],System.Collections.Generic.IEnumerable`1[System.String],System.Collections.Generic.IEqualityComparer`1[System.String])方法,此方法无法转换为存储表达式。“}
@jαsοndιnAlt这很好用。你知道我可以添加什么使它忽略项目中的标点符号。名称字符串?你必须实现一个自定义IgnoreSpartioneQualityComparer,并用它替换“StringComparer.OrdinalIgnoreCase”。你可以通过调整
string.Split()
来完成忽略。