C# 无法将IEnumerable类型转换为IEnumerable

C# 无法将IEnumerable类型转换为IEnumerable,c#,C#,我不明白为什么不能将从IEnumerable方法返回的值赋给同一类型。我得到的信息是: 无法将源类型IEnumerable转换为目标类型IEnumerable 任何人都可以建议此代码有什么问题: public IEnumerable<Person> GetPeople(IEnumerable<int> Ids) { return FindAll(m => Ids.Contains(m.Id)).ToList(); } public IEnumerable

我不明白为什么不能将从
IEnumerable
方法返回的值赋给同一类型。我得到的信息是:

无法将源类型
IEnumerable
转换为目标类型
IEnumerable

任何人都可以建议此代码有什么问题:

public IEnumerable<Person> GetPeople(IEnumerable<int> Ids)
{
    return FindAll(m => Ids.Contains(m.Id)).ToList();
}
public IEnumerable GetPeople(IEnumerable ID)
{
返回FindAll(m=>Ids.Contains(m.Id)).ToList();
}
调用此方法后,尝试分配给相同类型的值:

IEnumerable<Person> people = _myRepository.GetPeople(listOfIds);
IEnumerable people=\u myRepository.GetPeople(listOfIds);

我可以分配给var,但是我想在类范围中声明这个变量,所以我被卡住了。

在这种情况下,您必须使用您的Person和命名空间:

public IEnumerable<[Namespace]> GetPeople(IEnumerable<int> Ids)
{
    return FindAll(m => Ids.Contains(m.Id)).ToList();
}

IEnumerable<[Namespace].Person> people = _myRepository.GetPeople(listOfIds);
public IEnumerable GetPeople(IEnumerable ID)
{
返回FindAll(m=>Ids.Contains(m.Id)).ToList();
}
IEnumerable people=\u myRepository.GetPeople(listOfIds);

[名称空间]-存储
Person
类型的名称空间

是否属于IEnumerable Person?这是我能想象的唯一一件事,在没有看到实际输出的情况下会有所不同……FindAll是什么样子的?你可能有两种不同的人类型吗?你没有不同的人类吗?看起来person不是person可能您的解决方案中有多个person类。这可能是由于引用/加载同一程序集的不同变体/版本造成的。只有当OP在不同的命名空间中对
Person
有多个定义时,才会出现这种情况。OP没有指出是这样的,所以虽然这是一个可能的解决方案,但至少不是一个确定的解决方案。@Tim给出了错误消息,这是我能想到的唯一解释。