2013-06-04 274 views
3

我知道在c#4或4.5中可以創建匿名類型和動態類型,但我不確定它是如何工作的。 我遍歷一個SharePoint站點集合,我想爲每個子站點添加一個項目到列表,其中有3列如何創建匿名對象列表

但是我不想爲此創建一個類,因爲它只針對此方法。

private void RenderGrid() 
{ 
    string currentUrl = SPContext.Current.Site.Url; 
    List<object> listobject= new List<object>(); 

    SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 
     using (SPSite clientSiteCollection = new SPSite(currentUrl)) 
     { 
      foreach (SPWeb web in clientSiteCollection.AllWebs) 
      { 
       string webtemplate = web.Properties["WebTemplate"]; 

       if (webtemplate.Equals("xx")) 
       { 
        SPList xx = web.Lists.TryGetList(Constants.Lists.xx); 

        if (opportunityInfoList != null) 
        { 
         opportunityInfo.Add(new object() { 
          col1 = "value1", 
          col2 = "value2", 
          col3 = "value3" 
         }); 
        } 
       } 
      } 
     } 
    }); 

    lastCreatedOpportunitiesGrid.DataSource = opportunityInfo; 
    lastCreatedOpportunitiesGrid.DataBind(); 
} 

回答

2

您可以通過在你的new聲明中沒有給予特定類型的創建匿名類型:

opportunityInfo.Add(new { 
    col1="value1", 
    col2="value2", 
    col3= "value3"}); 

這是可行的,但你將無法使用屬性,如opportunityInfo[0].col1,因爲你」我已明確聲明該列表爲List<object>。如果您將其聲明爲List<dynamic>,您將可以訪問匿名課程的成員。

(注:我不知道數據綁定副手如何將匿名類型的工作,或List的類型是否會做出任何行爲差異)

+0

之後,我可以在gridview中使用boundColumn? –

+0

正如我所說,我不確定。你必須自己嘗試一下! –

+0

它表示類型預計在第一個左括號 –

1

Anonymouse沒有名字。

只需創建一個沒有名稱的新類,它將成爲您的anonymouse對象。

opportunityInfo.Add(new { 
          col1 = "value1", 
          col2 = "value2", 
          col3 = "value3" 
         }); 
+0

這不會編譯。生成匿名對象時,您不會在'new'之後包含parens。當你包含它們時,編譯器希望你也提供一個類型。 –

+0

這只是拼寫錯誤。 – JSJ