2017-09-01 55 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。一旦開始開發,是會做所有的建議。非常感謝。 –

相關問題