2011-11-14 64 views
3

我在我的模型下面的類:我怎麼能算多少元素在ICollection的在C#

public class Notebook : TableServiceEntity 
{ 
    public string NotebookLinksJSON { get; set; } 

    public string NotebookLinksCount { 
     get { 
      var a = NotebookLinksJSON.FromJSONString<Notebook.Link>().Details; 
      var b = a.Count(); 
      return NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count(); 
     } 
    } 

    public class Link 
    { 
     public Link() { 
      _details = new List<Detail>(); 
     } 
     public IList<Detail> Details { 
      get { return _details; } 
     } 

     private List<Detail> _details = new List<Detail>(); 

     public class Detail 
     { 
      public string L { get; set; } 
      public string R { get; set; } 
     } 

    } 
} 

我要的是有一個屬性NotebookLinksCount,將返回的細節數量NotebookLinksJSON字符串。是

在瓦爾的數據類型如下:

var a = NotebookLinksJSON.FromJSONString<Notebook.Link>().Details; 
var b = a.Count(); 

a is an interface System.Collections.Generic.IList<T> 
b is ?? <<< nothing shows when I try to find out what type it is 

當我建我收到以下錯誤:

Error 3 Non-invocable member 
'System.Collections.Generic.ICollection<S.Storage.Models.Notebook.Link.Detail>.Count' 
cannot be used like a method. 

有人可以幫助我一些建議,我怎麼能得到NotebookLinks數量?此外,如果NotebookLinksJSON是空值,那麼我希望計數返回零。

回答

6

Count是屬性。取出(),並調用它像:

NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count; 

編輯:
在評論從@Melissa回答一個問題:要使它在該NotebookLinksJSON對象爲空的情況下返回null,則需要一個空檢查。

public int NotebookLinksCount { 
    get { 
     return (NotebookLinksJSON != null) ? 
      NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count : 
      0; 
    } 
} 

而且我建議將您的NotebookLinksCount屬性更改爲返回int。雖然如果你真的需要一個字符串,你可以改變它。

public string NotebookLinksCount { 
    get { 
     return (NotebookLinksJSON != null) ? 
      NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count.ToString() : 
      "0"; 
    } 
} 
+0

COUNT()中也存在,作爲一個LINQ擴展方法。 –

+0

@FrederikGheysels,我想她試圖在非泛型集合上使用System.Linq.Enumerable.Count()擴展方法,所以它仍然可以是一個方法。 'NotebookLinksJSON.FromJSONString ()。Details.OfType ()。Count()'將是Linq的工作代碼我相信 –

+0

謝謝。我怎麼能處理沒有細節的情況。對於NotebookLinksJSON字段爲空的情況,我希望計數返回零。 –

0

只要使用return NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count;

你並不需要調用這裏Extension方法

+0

謝謝。我怎麼能處理沒有細節的情況。對於NotebookLinksJSON字段爲空的情況,我希望計數返回零。 –

+0

你必須'空'檢查它!即使你使用了擴展方法,你仍然會有一個例外。所以最好先檢查'null' –