gpt4 book ai didi

c# - 如何使用 LINQ 查找 ResultPropertyCollection 中的任何值是否包含某个子字符串?

转载 作者:行者123 更新时间:2023-11-30 12:50:56 25 4
gpt4 key购买 nike

如何使用 LINQ 查找 ResultPropertyCollection 中的任何值是否包含某个子字符串?

背景:在我的雇主公司重命名之后,我想检查是否所有用户都有一个正确的新电子邮件别名,这些别名在 Active Directory 中列为 proxyAddresses。直接访问 ResultPropertyCollection 中的单个值就可以正常工作,如下所示:

DirectorySearcher mySearcher = new DirectorySearcher(mySearchRoot, myFilter, myPropertiesList);
myResults = mySearcher.FindAll();

var query = from SearchResult myResult in myResults
where (myResult.Properties["proxyAddresses"][0].ToString().Contains ("WeNeedThis.com"))
select myResult;

但是我无法搜索集合中的所有值。我似乎无法找出范围变量的正确类型是什么:

where (from WhatType? myAddress in myResult.Properties["proxyAddresses"] 
where (myAddress.Contains("WeNeedThis.com"))
select myAddress)

我如何设置 where 子句,以便它在 proxyAddresses 的任何值中找到搜索字符串的任何出现?

答案:事实证明这是正确的 where 子句:

   where ( ( from String myAddress in myResult.Properties["proxyAddresses"]
where myAddress.Contains("WeNeedThis.com")
select myAddress).ToList().Count == 0)

有两个错误交织在一起:外部 where 子句需要内部选择结果的 bool 结果,这是通过 .ToList().Count == 0 实现的。范围变量的类型确实是 String = myResult.Properties["proxyAddresses"][0].GetType(),尽管 Collection 没有直接的 String 成员。我误解了生成的编译器错误。

最佳答案

我想你要找的类型是ResultPropertyValueCollection .

但是,你不能省略类型并使用类型推断吗?

from myAddress in myResult.Properties["proxyAddresses"]

此外,您可以使用 Contains(str) 而不是使用 IndexOf(str) > 0 作为谓词。

关于c# - 如何使用 LINQ 查找 ResultPropertyCollection 中的任何值是否包含某个子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com