如何计算C#中ICollection中有多少元素?

时间:2011-11-14 15:13:26

标签: 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为null,那么我希望计数返回零。

2 个答案:

答案 0 :(得分: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";
    }
}

答案 1 :(得分:0)

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

您无需在此处调用Extension方法