如何在IEnumerable中获取该项的值与另一个类中的成员?

时间:2016-08-03 13:29:10

标签: c# list ienumerable

enter code here我有一个GlobalTerms类,它包含一个数据成员术语,它是Term类型的列表。

每个Term类有3个成员。

  1. int Id;
  2. bool IsApproved;
  3. string注意;
  4. 所以,它看起来像:

    Class GlobalTerms
    {
      IEnumerable<TermInfo> UserTerms;
    
    }
    
    Class TermInfo
    {
        public int Id { get; set; }
        public string Note{ get; set; }
        public bool IsApproved{ get; set; }
    }
    

    如果我有一个GlobalTerms对象(globalTerms),我怎样才能获得TermInfo中的Status等于True的TermInfo对象?

    我试着写这样的东西:

         GlobalTerms globalTerms = new GlobalTerms();
                    globalTerms.UserTerms.Where(x => x.IsApproved.Equals(true))
                        .Select(x => x.Id);
    

    我的任务是检查UserApperms中的所有项目在IsApproved字段中是否为true;    结果我收到错误:     System.ArgumentNullException:值不能为null。参数名称:source 提前感谢您的帮助,

    解答: 结果,使用下一个代码解决了这个问题:

     *termsList* - is a IList<GlobalTerms> 
    
    foreach (var singleTerm in termsList)
                {
                    var sourceTermsList = singleTerm.UserTerms.ToList();
                    foreach (var status in sourceTermsList)
                    {
                        status.IsApproved.Should().BeTrue();
                    }
                }
    

    感谢所有人,

2 个答案:

答案 0 :(得分:0)

您创建了新对象,其属性UserTerms为null

答案 1 :(得分:0)

您永远不会在UserTerms中初始化GlobalTerms成员,因此当您创建GlobalTerms的新实例时,UserTerms IEnumerable为空。在对它运行linq查询之前,需要将其设置为某种非空集合。

此外,IsApproved成员是什么?如果这是一个可以为你的问题的可空类型。