检查ICollection是否包含基于属性的元素

时间:2018-09-19 15:07:11

标签: c# icollection

在C-Sharp中,我有一个Registrations类,它基本上创建了一个Questions项的列表,如下所示:

public partial class Registrations
{
    public Registrations()
    {
        this.Questions = new HashSet<Questions>();
    }

    public int id { get; set; }
    public virtual ICollection<Questions> Questions { get; set; }
}

我的Questions类有一个名为Title的字段,它仅提供了表单字段标签。

public partial class Questions
{
    public int id { get; set; }
    public int registrationId { get; set; }
    public string Title { get; set; }
    public string Data { get; set; }
}

用户创建注册时,可以添加许多具有不同标题的问题。我想检查特定的注册信息是否包含标题为“城市” 的字段。我想在我的注册类中创建一个名为hasCity的函数,该函数将返回boolean,具体取决于特定的注册是否具有该字段。

public hasCity()
{
    Questions city = new Questions();
    city.Title = "City";
    if( this.Questions.Contains( city ) )
    {
        return true;
    }
    return false;
}

现在,上面的函数始终返回false,我猜这是因为我需要创建某种方法来仅检查字符串值 City Title属性 strong>。

1 个答案:

答案 0 :(得分:0)

我认为您可以在LinQ中使用Any方法。请尝试以下方法。希望对您有帮助,我的朋友:

public partial class Questions
    {
        public int id { get; set; }
        public int registrationId { get; set; }
        public string Title { get; set; }
        public string Data { get; set; }
    }

    public partial class Registrations
    {
        public Registrations()
        {
            this.Questions = new HashSet<Questions>();
        }

        public int id { get; set; }
        public virtual ICollection<Questions> Questions { get; set; }
        public bool HasCity(string titleCity)
        {            
            if (this.Questions.Any(x => x.Title.ToLower() == titleCity.ToLower()))
            {
                return true;
            }
            return false;
        }
    }