user.fld_usr_name是一个值为随机名称
的字符串user是作为参数
提供的对象ByVal user As GUser
这是无效的linq查询
Dim result = (From usr In users Where usr.Name.Contains(user.fld_usr_name) Select usr).ToList()
这是有效的
Dim result = (From usr In users Where usr.Name.Contains("random name") Select usr).ToList()
这是错误
Object reference not set to an instance of an object.
我在Linq到Active Directory库中使用它
这可能意味着它是实体的linq
我已经尝试了一切
答案 0 :(得分:0)
我进入了该插件的源代码。
LINQ就像用c#一样不能像vb.net那样工作。 该插件是C#代码,但这无关紧要。很奇怪。
我已经忘记了细节,因为它已经有一段时间了,但它必须做一些事情,它将属性作为参考传递而不是值。或者它必须是静态的......如果我知道我会修复它
我使用共享属性来加载我的所有用户并使用它。 如果有人知道如何修复此错误,请告诉我
答案 1 :(得分:0)
另一个想法是,活动目录对“用户”或“组”的定义非常宽松。例如,与团体;您有安全组和通讯组。但AD可能实现为具有安全组,授权组,通讯组,位置组等等。然后,您的IT部门可能会设置它以便OU表示矩阵组等等。但是当你告诉AD给你带回一个安全组列表时,它会带你回到使用安全组类型创建它的一切。
现在,如果您备份并从另一个方向查看它,您会发现并非所有“用户”实际上都是用户。有些使用不同,因此不使用“名称”属性。我已经碰到了几次这样的情况,我把连接钻到我认为合适的OU中,然后尝试将OU中的所有名称都带回来。如果实际上没有使用该字段,它将返回null并将您的应用程序打开。 AD设计不好吗?通常。许多组织养成了创建用户或组来完成任务的习惯,而不是以物理上代表组织的方式来完成任务。例如,创建仅由Web应用程序使用的用户帐户,或创建新组只是为了包含一些特殊人员的权限,就像我之前描述的那样。当然,问题在于,在编写应用程序时,您会尝试从数据库的角度来看待它。但它不是一个数据库;它只是一个集合的集合。一个不标准,动态,平面的文件。 :(
因为它可能适用于您,您的linq查询可能会返回zilch,因为Name字段实际上对于该集合为null。出于这个原因,我现在只使用GUID或Native GUID。如果你只有一个名字,那么使用搜索器和抓取guid,然后使用这些guid创建一个目录条目,它将包含你正在寻找的信息。