2017-09-01 29 views
0

我有以下类无法隐式转换型“的IEnumerable <ob>”到“Generic.List <cdsworkflows>”嵌套对象

public class cdsworkflows 
{ 
    public string WorkflowName; 
    public string ActionGroup; 
} 

public class cdssystems 
{ 
    public string cdsSystemName; 
    public List<cdsmodules> listModules; 
} 

public class cdsmodules 
{ 
    public string moduleName; 
    public List<cdsworkflows> listWorkflows; 
} 

我推值,以上述对象从一个表中的所有这些数据如下。我在收到错误“选择新的”中指出:

Cannot implicitly convert type System.Collections.Generic.IEnumerable<cdsworkflows> to System.Collections.Generic.List<cdsworkflows> . An explicit conversion exists (are you missing a cast?)

此外,如果你看到最后一行ActionGroup = grpWorkflows.Count().ToString()我想要分配的价值,而不是数量。怎么做。

List<cdssystems> results = 
    (from SPListItem item in myItemsList 
    group item by item["Systems"] 
    into grp 
    select new cdssystems() 
    { 
     cdsSystemName = grp.Key.ToString(), 
     listModules = 
      from item in grp 
      group item by item["Modules"] 
      into grpModules 
      select new cdsmodules() 
      { 
       moduleName = grpModules.Key.ToString(), 
       listWorkflows = 
        from item in grpModules 
        group item by item["Workflows"] 
        into grpWorkflows 
        select new cdsworkflows() 
        { 
         WorkflowName = grpWorkflows.Key.ToString(), 
         ActionGroup = grpWorkflows.Count().ToString() 
        } 
      } 
    } 
    ).ToList(); 
+0

你是什么意思*我想分配的价值,而不是计数。怎么做。*? –

+0

其实我在物品[“ActionGroup”]中收集。那基本上是叶节点。我想将该值分配给ActionGroup。 –

+0

查看下面更新回答 –

回答

0

你的模型类包含在嵌套查询List<T>类型,但性能不添加ToList()到投影因此它会创建一个IEnumerable<T>,因此错误:

对于listWorkflows:更改为:

对于cdsmodules

​​

同样的想法

对于问题的第二部分,我要分配的值,而不是数变化:

ActionGroup = string.Join(", ", grpWorkflows.Select(i => i["ActionGroup"])) 

另外:

  1. 请参见C#命名约定: MSDN,dotFactory
  2. 我建议,如果你定义你的字段为public,那么他们就是properties。看到这个参考:Properties vs. Fields: Need help grasping the uses of Properties over Fields
+0

谢谢吉拉德。但是如何在选择项目toList将下面的作品? ()选择新的cdsworkflows() WorkflowName = grpWorkflows.Key.ToString(), ActionGroup = grpWorkflows.Count()。ToString() })。ToList() –

+0

@JaneshHari - 完全。见编辑 –

+1

当然这只是一个POC。一旦开始开发,是会做所有的建议。非常感谢。 –

相关问题