2011-11-14 8 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を持つことですノートブックリンクのJSON文字列。次のようにVARSの

データ型は以下のとおりです。

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. 

誰かが私が得ることができる方法として、いくつかのアドバイスで私を助けることができますノートブックリンクの数?また、NotebookLinksJSONがnullの場合、カウントを0に戻したいと思います。

答えて

6

Countはプロパティです。

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

編集:
をコメントで@Melissaからの質問に答える:好き()を削除し、それを呼び出すことがNotebookLinksJSONオブジェクトがnullである場合に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

ここExtensionメソッドを呼び出す必要はありませんカウント()LINQの拡張メソッドとして、同様に存在します。 –

+0

@FrederikGheysels、私は彼女が非ジェネリックなコレクションでSystem.Linq.Enumerable.Count()拡張メソッドを使用しようとしていると思うので、まだメソッドである可能性があります。 'NotebookLinksJSON.FromJSONString ()。Details.OfType ()。Count()'は私が信じているLinqの作業コードになります –

+0

ありがとう。どのように詳細がない状況に対処することができますか?フィールドNotebookLinksJSONがnullの場合、カウントを0に戻したいと思います。 –

0

ちょうどreturn NotebookLinksJSON.FromJSONString<Notebook.Link>().Details.Count;を使用してください。

あなたは

+0

ありがとうございます。どのように詳細がない状況に対処することができますか?フィールドNotebookLinksJSONがnullの場合、カウントを0に戻したいと思います。 –

+0

あなたはそれを 'ヌル'チェックする必要があります!拡張メソッドを使用したとしても、とにかく例外があります。最初に 'ヌル'をチェックする方が良い –

関連する問題