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之前那么要执行这种操作,我需要另一个汇编引用吗?
.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>
接口。我们无法从你所展示的内容中分辨出这部分内容。
如果你能给我们更多的信息,我们也许能帮上更多的忙。