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