我正在尝试编写一个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
方法来检查文档类型别名是否在字符串数组中。
这几乎可以工作,它将检查文档类型别名是否包含字符串数组中的任何字符串。但是,它也适用于部分匹配,但我确实需要完全匹配。
例如,字符串数组中的值为review
。 ContainsAny
似乎要做的是使用文档类型别名为review
的所有节点,但它也会使用文档类型别名preview
来提取任何节点。
有没有办法轻松更改此内容,以便review
完全匹配而不是部分匹配?
谢谢,
本
答案 0 :(得分:4)
你真正需要做的就是反转逻辑并使用{{3}}:
nodes = nodes.Where(x => allowedDocTypes.Contains(x.DocumentTypeAlias));