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# 如何从linq返回数组?_C#_Arrays_Linq_Asp.net Mvc 4 - Fatal编程技术网

C# 如何从linq返回数组?

C# 如何从linq返回数组?,c#,arrays,linq,asp.net-mvc-4,C#,Arrays,Linq,Asp.net Mvc 4,您好,我正在编写linq查询以从多个表中获取数据。我试图得到如下所示的对象数组 processobject retObj = new processobject(); retObj =(from c in entityObject.NCT_Process join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id join file in entityObje

您好,我正在编写linq查询以从多个表中获取数据。我试图得到如下所示的对象数组

   processobject retObj = new processobject();
 retObj =(from c in entityObject.NCT_Process
    join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
     join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID 
    join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
   where c.processid == "10"
   select new processobject
    {
    id = c.ID,
    code = c.code,
    flochartContent = c.flowchartContent,
    //arrayofTemplates array i want to return
    }
    );
    public class processobject
    {
    public templatesObject[] arrayofTemplates { get; set; }
    public int id { get; set; }
    public string flochartContent { get; set; }
    public string code { get; set; }
    }
在上面的查询中,我编写了一个条件,其中
c.processid==“10”
。因此,
NCT_模板
中存在多条记录,且
processid
10。我想返回包含所有记录的数组。我在自定义类中创建了如下数组。 我有这个疑问

 processobject retObj = new processobject();
retObj = (from c in entityObject.NCT_Process
                                  join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
                                  join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID
                                  into filesObjFirst
                                  from wt1 in filesObjFirst.DefaultIfEmpty()
                                  join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
                                  into filesObj
                                  from wt in filesObj.DefaultIfEmpty()
                                  where c.ID == dbObject.ID
                                  select new processobject
                                  {

                                      id = c.ID,
                                      code = c.code,
                                      flochartContent = c.flowchartContent,
                                      name = c.name,
                                      parentId = c.parentId,
                                      projectId = c.projectId,
                                      objectives = c.objectives,
                                      displayOrder = c.dispalyOrder,
                                      iconFileId = c.iconfileId,
                                      level = c.level,
                                      iconFileobj = new iconFile
                                      {
                                          id = wt1.upld_ID,
                                          name = wt1.fileName,
                                          url = wt1.filePath
                                      },
                                      description = c.description,
                                      startCriteria = c.startCriteria,
                                      endCriteria = c.endCriteria,
                                      reporting = c.reporting,
                                      output = c.output,
                                      kpi = c.kpi,
                                      procedureHistory = c.procedureHistory,
                                      role = c.role,
                                      duration = c.duration,
                                      owner = c.owner,
                                      visibility = true,
                                      createdUserId = c.createdUserId,
                                  }).FirstOrDefault();
我还有一个问题

 templatesObject[] templatesobject = (from c in entityObject.NCT_Templates
                                                             where c.processId == dbObject.ID
                                                             join file in entityObject.NCT_FileUpload on c.templateFileId equals file.upld_ID
                                                             into filesObjFirst
                                                             from wt1 in filesObjFirst.DefaultIfEmpty()
                                                             select new templatesObject
                                                             {
                                                                 id = c.id,
                                                                 title = c.title,
                                                                 version = c.version,
                                                                 visible = c.visibility,
                                                                 filesObj = new iconFileTemplate()
                                                                 {
                                                                     id = wt1.upld_ID,
                                                                     url = wt1.filePath,
                                                                     name = wt1.fileName
                                                                 }
                                                             }).ToArray();
arrayofTemplates
内部,我想存储
NCT_模板的记录
。 任何帮助都将不胜感激。谢谢。

A
。ToArray()
将在您查询后完成此工作

   processobject retObj = new processobject();
 retObj =(from c in entityObject.NCT_Process
    join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
     join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID 
    join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
   where c.processid == "10"
   select new processobject
    {
    id = c.ID,
    code = c.code,
    flochartContent = c.flowchartContent,
    //arrayofTemplates array i want to return
    }
    );

var arr = retObj.ToArray();
更新

我建议您使用
ICollection
而不是数组。由于需要阵列,解决方案如上所述,但如果使用
ICollection
,则更容易理解:

public class processobject
{
public ICollection<processobject> processobject{ get; set; }
public int id { get; set; }
public string flochartContent { get; set; }
public string code { get; set; }
}
更新

由于json对象中的数组返回属性,我建议您创建另一个模型。并将值直接传递给此类的对象。如下图所示:

public class processobject
{
public templateFileId templateFileId{ get; set; }
public int id { get; set; }
public string flochartContent { get; set; }
public string code { get; set; }
}

public class templateFileId
{
  public int id {get; set;}
  public string url {get; set;}
  public string name {get; set;}
  public int created {get; set;}
}
一个
.ToArray()
将在您查询后执行此任务

   processobject retObj = new processobject();
 retObj =(from c in entityObject.NCT_Process
    join user in entityObject.NCT_UserRegistration on c.createdUserId equals user.User_Id
     join file in entityObject.NCT_FileUpload on c.iconfileId equals file.upld_ID 
    join templObj in entityObject.NCT_Templates on c.ID equals templObj.processId
   where c.processid == "10"
   select new processobject
    {
    id = c.ID,
    code = c.code,
    flochartContent = c.flowchartContent,
    //arrayofTemplates array i want to return
    }
    );

var arr = retObj.ToArray();
更新

我建议您使用
ICollection
而不是数组。由于需要阵列,解决方案如上所述,但如果使用
ICollection
,则更容易理解:

public class processobject
{
public ICollection<processobject> processobject{ get; set; }
public int id { get; set; }
public string flochartContent { get; set; }
public string code { get; set; }
}
更新

由于json对象中的数组返回属性,我建议您创建另一个模型。并将值直接传递给此类的对象。如下图所示:

public class processobject
{
public templateFileId templateFileId{ get; set; }
public int id { get; set; }
public string flochartContent { get; set; }
public string code { get; set; }
}

public class templateFileId
{
  public int id {get; set;}
  public string url {get; set;}
  public string name {get; set;}
  public int created {get; set;}
}

非常感谢。我编辑了我的问题。我不知道如何为属性赋值。我已经在上面发布了示例对象。@NiranjangDBole updated:),请记住,如果数组返回多组数据,您需要如上所述使用ICollection。谢谢您的时间。在我的示例中,templateFileId将有多行。如何为templateFileId的属性赋值。例如,我写了id=c.id,title=c.title,version=c.version,这样我怎么能给url,name赋值呢etc@NiranjanGodbole在您的查询中。您可以根据TemplatefileId进行选择,将数据分配给新类,如:
newTemplateFileId{id=c.id,url=c.url,name=c.name,created=c.created}
我已经选择了新的processobject如何添加新的TemplatefileId谢谢。我编辑了我的问题。我不知道如何为属性赋值。我已经在上面发布了示例对象。@NiranjangDBole updated:),请记住,如果数组返回多组数据,您需要如上所述使用ICollection。谢谢您的时间。在我的示例中,templateFileId将有多行。如何为templateFileId的属性赋值。例如,我写了id=c.id,title=c.title,version=c.version,这样我怎么能给url,name赋值呢etc@NiranjanGodbole在您的查询中。您可以基于TemplatefileId进行选择,将数据分配给新类,如:
newTemplateFileId{id=c.id,url=c.url,name=c.name,created=c.created}
我已经选择了新的processobject如何添加新的TemplatefileId