C#从相同类型的所有类成员获取属性的最佳方式

时间:2017-06-21 15:41:01

标签: c# properties

我试图将代码缩短到最有效的方式来访问该类所有成员中的特定属性。

    public class Title
    {
        public string reference { get; set; }
        public string root { get; set; }
        public string name { get; set; }
        public string description { get; set; }
        public string shortT { get; set; }
    }

    public class Results
    {
        public List<Title> pop { get; set; }
        public List<Title> exact { get; set; }
        public List<Title> sub { get; set; }
        ...
    }

Results来自JSON反序列化。它包含相同类型的成员,popexactsub(确切的成员数可能会有所不同)。我想过滤Resultsname包含&#34; jackie&#34;

的所有对象

那么迭代成员列表(pop,exact,sub)并查看属性name并查看它是否包含&#34; jackie&#34;的最佳/有效方式是什么? ,无需直接引用pop,exact或sub。 原因是JSON明天可以返回更多成员,例如popexact等我不知道的高级成员,所以我需要找到一种方法将它们全部合并到一个可搜索的列表中(因为它们都是相同的类型)。

因此,可以直接引用单个语句中所有成员的属性name,如

  

foreach(结果* .name中的字符串n)

2 个答案:

答案 0 :(得分:0)

您可以制作该类的列表并使用表达式访问

List<Title> asdf = new List<Title>;

asdf.where(var => var.name == "jackie").ToList().ForEach(var =>
{
     //do actions with this classes var. 
};

希望我帮助你;)

答案 1 :(得分:0)

如果要访问其中的内容,则必须引用所有三个属性。如果您想将所有三个内容视为一个集合,您可以Union

// given that r is an instance of Results
var combinedTitles = r.exact.Union(r.pop).Union(r.sub);
var matches = combinedTitles .Where(title => title.name == "title you want to match");