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

时间:2015-12-17 23:39:50

标签: c# asp.net .net c#-4.0

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

现在,我需要调用另一个接受IEnumerable<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>>,以便我可以按原样使用第二种方法

5 个答案:

答案 0 :(得分:4)

在极少数情况下,我使用这样的扩展方法:

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

public void FunctionThatTakesEnumerable(IEnumerable<Person> personList)
{ 
    //
}

答案 1 :(得分:2)

  

我正在寻找像 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)

答案 2 :(得分:2)

一种简单的方法是从:

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

并添加:

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

答案 3 :(得分:1)

您可以创建devise_for :users resources :users, only: [:index, :show] 的新实例,因为List<Person>实现了List<T>https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

所以:

IEnumerable

答案 4 :(得分:1)

只需use

Enumerable.Repeat(objA, 1);

Repeat完全返回您需要的内容。