c#语法问题

本文关键字:问题 语法 | 更新日期: 2023-09-27 18:11:41

我有以下c#代码:

<>之前private bool MailBoxAlreadyExists(string userEmail, Runspace runSpace) { Pipeline pipeLine = runSpace.CreatePipeline(); Command createMailBox = new Command("Get-User"); createMailBox.Parameters.Add("identity", userEmail); pipeLine.Commands.Add(createMailBox); Collection user = pipeLine.Invoke(); PSMemberInfo item = user[0].Properties.Where(property => property.Name == "RecipientType").SingleOrDefault(); if (item != null) { if (string.Equals(item.Value.ToString(), "UserMailbox", StringComparison.OrdinalIgnoreCase)) { pipeLine.Dispose(); return true; } else { pipeLine.Dispose(); return false; } } return false; }之前

我在看PSMemberInfo item = user[0].Properties.Where(property => property.Name == "RecipientType").SingleOrDefault();行代码。我不太确定在声明的Where(property => property.Name == "RecipientType")部分发生了什么。我想这是某种表达式。有人能解释一下吗?

问题的第二部分是,这段代码在Visual Studio中加了下划线。我从中得到以下错误:

<>之前错误2"系统管理自动化"。PSMemberInfoCollection'不包含'Where'的定义,也没有扩展方法'Where'接受类型为'System.Management.Automation '的第一个参数。可以找到pmemberinfocollection(您是否缺少using指令或程序集引用?)c:' users ' dvgo ' documents ' visual Studio 2010'Projects'DVLib'ActiveDirectory'ADRunner.cs 566 33 ActiveDirectory之前

那么要执行这种操作,我需要另一个汇编引用吗?

c#语法问题

.Where.SingleOrDefault都在System.Linq名称空间中,所以您必须将using System.Linq;添加到文件的顶部。

在c#中,=>运算符表示lambda表达式。lambda很容易理解:它是一个匿名函数,所以lambda

property => property.Name == "RecipientType"

是一个接受(隐式类型)形参property并返回布尔表达式property.Name == "RecipientType"的函数。接受一个对象并返回一个布尔值的函数也称为谓词。

这确实是Lambda表达式,它是LINQ的一部分。

Where方法是LINQ的一部分,而不是Lambda表达式本身。

为了能够使用它,在你的页面顶部添加这样一行:

using System.Linq;

您需要机器安装。net 3.5或更高版本,并且Visual Studio中的项目也要针对该框架或更高版本。

=>部分是一个lambda表达式。lambda表达式可以转换为委托表达式树。它就像c# 2中引入的匿名方法的一个更好的版本。

Where方法是LINQ的一部分。在这种情况下,你的可能是指LINQ到对象的版本,Enumerable.Where -但这不是完全清楚,因为我们不知道所涉及的类型。我强烈建议你从书籍或好的教程中开始学习LINQ——它不是那种可以从Stack Overflow这样的问答网站上轻松学习的主题。

你的错误可能是由于以下三个问题之一:

    你可能没有使用。net 3.5,这是LINQ的先决条件,除非你使用第三方库,如LINQBridge。
  • 你的代码中可能没有using System.Linq;的using指令
  • PSMemberInfoCollection可能不实现通用的IEnumerable<T>接口。我们无法从你所展示的内容中分辨出这部分内容。

如果你能给我们更多的信息,我们也许能帮上更多的忙。