Linq - 字符串数组中的精确字符串

时间:2017-04-17 22:14:55

标签: c# linq umbraco

我正在尝试编写一个Linq查询,该查询遍历一组Umbraco节点并检查它的文档类型别名是否在字符串数组中。我有一些非常接近的东西:

if (allowedDocTypes != null && allowedDocTypes.Length > 0)
{
    allowedDocTypes = allowedDocTypes.Where(x => !string.IsNullOrEmpty(x)).ToArray();
    nodes = nodes.Where(x => x.DocumentTypeAlias.ContainsAny(allowedDocTypes));
}

allowedDocTypes是一个包含文档类型的字符串数组。 if语句中的第一行从数组中删除任何空字符串。最后,我正在使用ContainsAny方法来检查文档类型别名是否在字符串数组中。

这几乎可以工作,它将检查文档类型别名是否包含字符串数组中的任何字符串。但是,它也适用于部分匹配,但我确实需要完全匹配。

例如,字符串数组中的值为reviewContainsAny似乎要做的是使用文档类型别名为review的所有节点,但它也会使用文档类型别名preview来提取任何节点。

有没有办法轻松更改此内容,以便review完全匹配而不是部分匹配?

谢谢,

1 个答案:

答案 0 :(得分:4)

你真正需要做的就是反转逻辑并使用{​​{3}}:

nodes = nodes.Where(x => allowedDocTypes.Contains(x.DocumentTypeAlias));