简单的愚蠢的foreach循环问题

lea*_*ing 2 c#

在下面的代码中,我试图阅读所选项目的列表和所有可用项目的列表.

我想存储所有未从所有项目列表中选择的项目.但是使用下面的代码,我有所有项目的列表...在哪里以及如何打破第二个循环incase projectId.Value == selectedProjectId.Value?

public IEnumerable NotselectedProjects; public IEnumerable NotSelectedProjects(){

        if (this.NotselectedProjects == null)
        {
            List<SelectListItem> result = new List<SelectListItem>();
            foreach (var selectedProjectId in selectedProjects) 
            {
                foreach (var projectId in projectLists)
                {
                    if (projectId.Value != selectedProjectId.Value)
                    {
                        result.Add(new SelectListItem
                        {
                            Selected = false,
                            Text = projectId.Text,
                            Value = projectId.Value
                        });
                        this.NotselectedProjects = result.AsEnumerable();
                    }
                }
            }
        }
        return this.NotselectedProjects;

    }
Run Code Online (Sandbox Code Playgroud)

Jen*_*ens 5

您可以使用LINQ缩短循环

var result = from projectId in projectLists
             where !selectedProjects.Any(s => s.Value == projectId.Value)
             select new SelectListItem  
                        {  
                            Selected = false,  
                            Text = projectId.Text,  
                            Value = projectId.Value  
                        });
Run Code Online (Sandbox Code Playgroud)