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

C# 如何将对象转换为该对象的IEnumerable,c#,asp.net,.net,c#-4.0,C#,Asp.net,.net,C# 4.0,我有一个函数返回一个Person类型的对象 现在,我需要调用另一个接受IEnumerable类型的函数。请问怎么做 下面的函数返回我个人 var objA = Service.GetAll(obj); 我需要调用另一个方法,如下所示 var result = Service.Get(AR<IEnumerable<Person>> name, type) var result=Service.Get(AR名称、类型) 我将名称指定为IEnumerable,因为它采用该

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

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

下面的函数返回我个人

var objA = Service.GetAll(obj);
我需要调用另一个方法,如下所示

var result = Service.Get(AR<IEnumerable<Person>> name, type)
var result=Service.Get(AR名称、类型)
我将名称指定为
IEnumerable
,因为它采用该类型

编辑

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

AR<IEnumerable<Person>>
AR

在所有其他地方,我的第一个方法返回
AR
,但有一个方法返回
AR
。现在我需要把它做成一个列表,即
AR
,这样我就可以按原样使用第二种方法您可以创建一个
list
的新实例,因为
list
实现了
IEnumerable

因此:

var person=FunctionThatGetsPerson();
List personList=新列表{person};
可数函数(personList);
采用可数形式的公共空函数(IEnumerable personList)
{ 
//
}

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

public static IEnumerable<T> YieldMe<T>(this T obj)
{
    yield return obj;
}
公共静态IEnumerable YieldMe(此T对象)
{
收益率目标;
}
只要

返回您所需的内容

我正在寻找像应该传递的
IEnumerable
之类的内容 作为第二个函数的参数
,而我获取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 }); 
/*当我在第一个函数中获取Person作为返回值时*/
Person p=FirstMethod();
/*IEnumerable应作为参数传递给第二个函数*/
第二种方法(新人[]{p});

虽然第二个方法签名可以是
void SecondMethod(IEnumerable x)

一个简单的方法是从以下开始:

public Person GetPerson()
{
    return new Person()
}
并加上:

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


您的意思是要将此人传递给接受
IEnumerable
作为参数的方法吗<代码>变量p=f1()然后调用
f2(新用户[]{p})
这就是你要找的吗?@RezaAghaei:不,我要找的是像IEnumerable这样的东西应该作为参数传递给第二个函数,而我在第一个函数中得到Person作为返回值。我怀疑这个问题<代码>var objA=Service.GetAll(obj)的名称严重错误。你说它返回一个
Person
?那么,它是
GetAll
什么?人闻起来很香。你确定你的类型和你说的一样吗。从你评论的语气来看,我怀疑不是。让我们看更多的代码,从编译器中看到的具体错误,以及从上面提供的代码中调用的所有代码的接口/方法声明。没有人知道如何构造
AgentResult
。很明显,你是在浪费人们的时间,因为你忽略了细节,在那些足以帮助你的人的脚下改变了“简单需求”。把你的问题弄清楚,当它正确形成时再问。@Deevine自从这个错误的问题出现以来,你已经三次完全改变了你方法中的类型。很难不认为这是浪费时间。你的似乎很简单,但它说personlist行中有无效参数person对象是
person
的一种类型吗?只创建一个内联数组不是更好吗<代码>函数takesEnumerable(newperson[]{Person})@Puddler我的意思是这基本上就是我在额外一行中所做的,但使用泛型。新列表是一个新对象。新对象是一个新资源。此外,即使您通过简单类型cast将IEnumerable放入方法中,列表也可以修改。该死,它说找不到命名空间的类型。您是否缺少程序集引用:SShow您所做的一切。@deevine
T
是泛型,因此,您可以将其替换为您的对象
Person
@deevine您可以检查标题中的“使用”部分并确保您有
使用System.Collections;并使用System.Collections.Generic还显示如何调用扩展名method@Deevinee,似乎我们应该这样做,因为在这里发布的每个答案都会在没有这些的情况下工作,而且如果您首先发布这些答案,您会更快地得到答案。单项目数组的钝器工具可能是这里最好的答案。相比之下,用
yield
来创建状态机来回答这个问题似乎有点冗长。对我没有帮助。我的要求很简单,它应该将AgentResult作为第二个函数的输入,而我将Person作为第一个函数的输出。@Deevinee-我回答了您的问题。您现在已编辑了您的问题。请注意这一点。我会看看我是否可以更新,但如果你希望得到好的答案,你需要发布一个帖子。@Enigmativity:好的,请帮助我简单地了解我需要ARAR@Deevinee-我们不知道什么是
AR
。我们怎么可能知道如何提取内部类型?你需要发一封邮件。你读过那一页了吗?对不起,你的第一行本身就出错了。这个答案怎么会被否决呢?虽然它和你描述的一样?雷扎,对不起,我没有投反对票。事实上,你试图帮助我。真的,我没有投反对票,但不幸的是,这段代码没有help@RezaAghaei-投票被否决是因为OP对他的问题做出了实质性的改变。新读者认为我们的答案是完全错误的,因为编辑的原因。@Enigmativity无论如何,谢谢你的好意评论,并对你的答案加1,以破坏不合理的否决票的效果:)@Deevine你到底需要什么,如何使用它?这是抛出编译时错误
public Person GetPerson()
{
    return new Person()
}
public IEnumerable<Person> GetPeople()
{
    return new [] { GetPerson() };
}