如何获取IEnumerable中具有其他类中成员的项的值

本文关键字:其他 成员 何获取 获取 IEnumerable | 更新日期: 2023-09-27 18:00:05

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

每个学期班有3名成员。

  1. int Id
  2. bool IsApproved
  3. 字符串注释

所以,它看起来像:

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);

我的任务是检查UserTerms中的所有项目在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();
                }
            }

感谢大家,

如何获取IEnumerable中具有其他类中成员的项的值

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

您从未在GlobalTerms中初始化UserTerms成员,因此当您创建GlobalTerms的新实例时,UserTerms IEnumerable为null。您需要将其设置为某种类型的非null集合,然后才能对其运行linq查询

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