我的模型中有以下类:
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/