C# 如何将对象转换为该对象的IEnumerable
我有一个函数返回一个Person类型的对象 现在,我需要调用另一个接受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,因为它采用该
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您所做的一切。@deevineT
是泛型,因此,您可以将其替换为您的对象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() };
}