c# - 如何计算 C# 中的 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 字符串中的详细信息数量。

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.   

有人可以帮我提供一些关于如何获得 NotebookLinks 计数的建议吗?此外,如果 NotebookLinksJSON 为 null,那么我希望计数返回零。

最佳答案

Count 是一个属性。删除 () 并像这样调用它:

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

编辑:
在评论中回答@Melissa 的问题:要使其在 NotebookLinksJSON 对象为 null 的情况下返回 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";
    }
}

关于c# - 如何计算 C# 中的 ICollection 中有多少元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123669/

相关文章:

c# - 如何在运行时使用 .bmp 文件并在 Unity 中创建纹理?

c# - 在 XNA 中使用图 block 创建和保存 map

c# - 如何使用 GifBitmapEncoder 类在 .Net 中设置动画 gif 的速度

c# - 创建和显示动态错误消息(不在 UpdatePanel 内工作)

c# 类、结构或接口(interface)成员声明中的无效标记 'while'(循环不起作用)

c# - 如何忽略发送电子邮件方法并继续执行?

c# - 如何在 GeckoFX 中获取 Dom 树

C# ASP.NET Core 构建动态表单

c# - 验证十进制值列表(或该列表的子列表)是否可以等于某个总和

c# - 如何将 XAML 元素绑定(bind)到 Windows 应用商店应用程序中的自定义类?