Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使IEnumerable具有正确的类型_C#_Ienumerable - Fatal编程技术网

C# 如何使IEnumerable具有正确的类型

C# 如何使IEnumerable具有正确的类型,c#,ienumerable,C#,Ienumerable,所以我有一个程序,它应该获取一组值,将它们存储在函数中的“projects”对象中,从这段代码中调用: public IEnumerable<ProjectAll> GetAllProjects() { var project = pullAllProjects(); return project; } public IEnumerable GetAllProjects() { var project=pullAllProje

所以我有一个程序,它应该获取一组值,将它们存储在函数中的“projects”对象中,从这段代码中调用:

    public IEnumerable<ProjectAll> GetAllProjects()
    {
        var project = pullAllProjects();
        return project;
    }
public IEnumerable GetAllProjects()
{
var project=pullAllProjects();
返回项目;
}
返回项目时出错,内容如下:

Error   1   Cannot implicitly convert type 'ProjectsApp.Models.Project' 
to 'System.Collections.Generic.IEnumerable<ProjectsApp.Models.ProjectAll>'. 
An explicit conversion exists (are you missing a cast?)
错误1无法隐式转换类型“ProjectsApp.Models.Project”
至“System.Collections.Generic.IEnumerable”。
存在显式转换(是否缺少强制转换?)
所以,我在StackOverflow上找到了这个:

但当我遵循这些指示时

            IEnumerable <Project> project = new Project();
            while (rdr.Read())
            {
                project.Id = (int)rdr["project_id"];
                project.Name = (string)rdr["project_name"];
                project.Title = (string)rdr["project_title"];
                project.Network = (int)rdr["main_network"];
                project.Start = (DateTime)rdr["project_start"];
            }
            return project;
IEnumerable项目=新项目();
while(rdr.Read())
{
project.Id=(int)rdr[“project_Id”];
project.Name=(字符串)rdr[“project_Name”];
project.Title=(字符串)rdr[“project_Title”];
project.Network=(int)rdr[“主网络”];
project.Start=(DateTime)rdr[“project_Start”];
}
返回项目;
每个变量(Id、名称等)都有一个错误

错误4“System.Collections.Generic.IEnumerable”
不包含“Name”的定义,并且没有接受
类型为“System.Collections.Generic.IEnumerable”的第一个参数
可以找到(是否缺少using指令或程序集引用?)
这似乎对StackOverflow链接的人有效,我的方式有什么不同

如果我需要添加更多信息,请告诉我,提前谢谢

IEnumerable
无法从
Project
分配。正确的方法是:

public IEnumrable<Project> pullAllProjects
{
    .
    .
    .
    var projects = new List<Project>();
    while (rdr.Read())
    {
        projects.Add(new Project 
        {
            Id = (int)rdr["project_id"];
            Name = (string)rdr["project_name"];
            Title = (string)rdr["project_title"];
            Network = (int)rdr["main_network"];
            Start = (DateTime)rdr["project_start"];
         });
    }
    return projects;
}
public IEnumerable PullAll项目
{
.
.
.
var projects=新列表();
while(rdr.Read())
{
添加(新项目)
{
Id=(int)rdr[“项目Id”];
名称=(字符串)rdr[“项目名称”];
标题=(字符串)rdr[“项目标题”];
网络=(int)rdr[“主网络”];
开始=(日期时间)rdr[“项目开始”];
});
}
返回项目;
}

问题在于,在语句“IEnumerable project=new project();”中,您试图用项目对象初始化IEnumerable对象。必须使用实现IEnumerable的对象初始化IEnumerable。项目不是可枚举的;没有办法反复浏览它。在本例中,您可以使用C#列表中更常用的IEnumerable之一,如下所示:

List<Project> projects = new List<Project>();

提供更多关于ProjectAll和Project类的信息。从pullAllProjects()返回的内容;您的PullAllProjects()中指示了什么?您的变量/函数命名不正确,使自己感到困惑。用复数名词表示事物的
IEnumerable
s。对单个实例使用单数名词。
IEnumerable
变量不应命名为
project
,并且不能将
project
的单个实例分配给一个本应包含
IEnumerable
变量的变量。您确定知道IEnumerable接口代表什么吗,您应该如何使用它?请查看
pullAllProjects()
的返回类型。错误解释表明它返回的是
ProjectsApp.Models.Project
,而不是
ProjectsApp.Models.ProjectAll
的IEnumerable集合。返回的Project.AsEnumerable()是什么?它不应该只是返回项目吗?如果返回方法的签名是IEnumerable,则应该是
List<Project> projects = new List<Project>();
List<Project> projects = new List<Project> { a, b, c, ... };
while (rdr.Read())
{
    project.Id = (int)rdr["project_id"];
    project.Name = (string)rdr["project_name"];
    project.Title = (string)rdr["project_title"];
    project.Network = (int)rdr["main_network"];
    project.Start = (DateTime)rdr["project_start"];
 }