如何将一个对象转换为该对象的IEnumerable

本文关键字:对象 IEnumerable 转换 一个对象 | 更新日期: 2023-09-27 18:27:19

我有一个函数返回一个Person类型的对象。

现在,我需要调用另一个接受IEnumerable<Person>类型的函数。请问怎么做?

下面的这个函数返回Person。

var objA = Service.GetAll(obj);

我需要调用另一个方法,如下

var result = Service.Get(AR<IEnumerable<Person>> name, type)

我将名称指定为IEnumerable<Person>,因为它采用该类型。

编辑

我的第二个方法将其作为参数类型。

AR<IEnumerable<Person>>

在所有其他地方,我的第一个方法返回AR<Ienumerable<person>>,但在一种情况下它返回AR<Person>。现在我需要将其作为一个列表,即AR<IEnumerable<Person>>,这样我就可以使用第二种方法,如

如何将一个对象转换为该对象的IEnumerable

在这些罕见的情况下,我使用这样的扩展方法:

public static IEnumerable<T> YieldMe<T>(this T obj)
{
    yield return obj;
}

一个简单的方法是从开始

public Person GetPerson()
{
    return new Person()
}

并添加:

public IEnumerable<Person> GetPeople()
{
    return new [] { GetPerson() };
}

我正在寻找类似IEnumerable<Person>应该通过的东西作为第二个函数的参数,而我得到Person作为返回值在第一个函数中

所以你可以使用这样的代码:

/*while I get Person as return value in first function*/
Person p = FirstMethod(); 
/*IEnumerable<Person> should be passed as a parameter to second function*/
SecondMethod(new Person[] { p }); 

而第二个方法签名可以是void SecondMethod(IEnumerable<Person> x)

您可以创建List<Person>的新实例,因为List<T>实现了IEnumerable。https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

因此:

var person = FunctionThatGetsPerson();
List<Person> personList = new List<Person> { person };
FunctionThatTakesEnumerable(personList);
public void FunctionThatTakesEnumerable(IEnumerable<Person> personList)
{ 
    //
}

只需使用

Enumerable.Repeat(objA, 1);

重复返回您所需要的内容。

相关文章: