如何在c#中计算一个集合中有多少个元素?

本文关键字:一个 集合 多少 元素 计算 | 更新日期: 2023-09-27 18:14:48

我的模型中有以下类:

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

如何在c#中计算一个集合中有多少个元素?

Count是一个属性。删除()并将其命名为:

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


在评论中回答@Melissa的问题:为了使它在NotebookLinksJSON对象为空的情况下返回空,您需要进行空检查。

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";
    }
}

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

这里不需要调用Extension方法