list< classtype>使用linq在c#中更新模型

本文关键字:更新 模型 linq classtype 使用 list | 更新日期: 2023-09-27 18:12:10

我有一个模型结构,如下图所示。

 public class GuideLineSectionsViewModel 
    {
        public GuideLineSectionsViewModel()
        {
            SectionsSet = new List<SectionViewModel>();
        }
         public string Title { get; set; }
        public List<SectionViewModel> SectionsSet { get; set; }
    }

    public class SectionViewModel
    {
        public SectionViewModel()
        {
            SectionsSet = new List<SectionViewModel>();
            QuestionsSet = new List<QuestionViewModel>();
            ProblemsSet = new List<ProblemViewModel>();
            GoalsSet = new List<GoalViewModel>();
            BarriersSet = new List<BarriersViewModel>();
            QuestionReferencesSet = new List<QuestionReferenceViewModel>();
        }
        public string Heading { get; set; }
        public List<SectionViewModel> SectionsSet { get; set; }
        public List<QuestionViewModel> QuestionsSet { get; set; }
        public List<ProblemViewModel> ProblemsSet { get; set; }
        public List<GoalViewModel> GoalsSet { get; set; }
        public List<BarriersViewModel> BarriersSet { get; set; }
        public List<QuestionReferenceViewModel> QuestionReferencesSet { get; set; }
    }

    public class ProblemViewModel 
    {
        public string Text { get; set; }
        public bool Identified { get; set; }
        public List<GoalViewModel> GoalsSet { get; set; }
        public List<QuestionReferenceViewModel> QuestionReferencesSet { get; set; }
    }

现在根据条件,我需要使用linq更新ProblemViewModel的每个列表值。下面是条件

public GuideLineSectionsViewModel FindGuidelineType(GuideLineSectionsViewModel guidelineSectionModel)
            {
                //GuideLineSectionsViewModel result = new GuideLineSectionsViewModel();
                string title = guidelineSectionModel.Title;
                int count = Regex.Matches(title, "Low Intensity").Count;
                if (count > 0)
                {
                }
                return guidelineSectionModel; 
            }

guidelineSectionModel。标题将包含文本为"一些值:低强度"。所以我使用regx来过滤文本。有没有其他的方法,我可以直接检查linq的状态。并更新模型模型

我想将ProblemViewModel模型属性值public bool Identified的列表值更新为"true"

目前只包含False值。

有谁能帮我解决这个问题吗

list< classtype>使用linq在c#中更新模型

看看下面的方法。我不会放LINQ,但是我想这个答案可以解决你的问题。同样,你的问题中缺少一些类结构,所以你可能需要把它放在下面的方法中。

GuideLineSectionsViewModel FindGuidelineType(GuideLineSectionsViewModel guidelineSectionModel)
            {
                //GuideLineSectionsViewModel result = new GuideLineSectionsViewModel();
                string title = guidelineSectionModel.Title;
                int count = Regex.Matches(title, "Low Intensity").Count;
                if (count > 0)
                {
                   foreach(SectionViewModel svm in guidelineSectionModel.SectionsSet)
                   {
                      foreach(ProblemViewModel pvm in svm.ProblemsSet)
                      {
                         pvm.Identified = true;
                      }
                    }
                }
                return guidelineSectionModel; 
            }

如果你喜欢LINQ:

if(guideLine.Title.Contains("Low Intensity"))
{
    guideLine.SectionsSet.ForEach(s => s.ProblemsSet.ForEach(ps => ps.Identified = true));
}

注意:请阅读这个答案https://stackoverflow.com/a/2962689/1525637由于Regex.Matches可能出现的性能问题,您应该使用String.Contains代替。

相关文章: