c# - 没有 add in linq 语法的定义?

标签 c# wcf web-services rest

我正在获得与上一个问题相关的帮助,但随后被告知要问一个与之相关的新问题,但给出的代码我遇到了错误:

public void AddPersonToCommunity(string person, string communityName) 
{ 
    var result = communities.Where(n => String.Equals(n.CommunityName, communityName)).FirstOrDefault(); 
    if (result != null) 
    { 
        result.Add(new Person() { PersonName = person }); //no definition for add?
    } 
}  

您可以在此处查看上一个问题以了解更多详情:relationships in rest?

如果我执行 var result = communities; 结果将具有 Add 的定义,所以我不确定发生了什么?

最佳答案

您正在调用 Where()这将返回 IEnumerable<Community> (没有 Add 方法)然后是 FirstOrDefault()返回 Community (也没有 Add 方法)。你会在哪里期待一个Add方法从何而来?

我怀疑你真的想要:

if (result != null) 
{ 
    result.People.Add(new Person { PersonName = person });
}

...因为Community.People是该社区中的人员列表,对吗?

请注意,如果您执行 var result = communities;确实会有一个 Add 方法 - 但签名为 Add(Community) , 不是 Add(Person) .

保持所有内容的类型正确很重要。这实际上与 LINQ 关系不大。如果您尝试过,您会看到相同的结果:

Community community = new Community();
community.Add(new Person { PersonName = person });

关于c# - 没有 add in linq 语法的定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050135/

相关文章:

c# - 使用 UserNameOverTransport 绑定(bind)时,如何让 WCF 以摘要模式发送密码? (WSE3.0代码转WCF)

java - CXF java.lang.ClassCastException : com. sun.org.apache.xerces.internal.dom.ElementNSImpl 无法转换为 com.tibco.ur.schemas.getocr.Output

c# - 使用 C#、BouncyCaSTLe 和导入的 RSA key 进行 RSA 签名和验证 - 内部工作的 Python 示例和非工作的 C# 代码示例

c# - 如何让 MahApps CleanWindow 工作?

c# - 未处理 Windows 服务异常

c# - 同一应用内的服务看不到同一 session

c# - "System.Web.HttpContext cannot be serialized because it does not have a parameterless constructor."

c# - 如何创建相对于特定文件夹的绝对路径?

.net - 进程内仅 WCF 命名管道通信?

c# - WCF 中的信息重用