使用LINQ对IEnumerable项目列表进行IN查询

本文关键字:IN 查询 列表 项目 LINQ IEnumerable 使用 | 更新日期: 2023-09-27 17:58:49

努力做到这一点。

因此,我有一个模型视图,它有一个IEnumerable<selectlistitem> BusinessUnits来绑定该视图的listBox和multiselect,我有IEnumerable<string> selectedBusinessUnit来保存所选的值。

一旦选择了多个值并将其回发到控制器,我就很难使用linq查询来根据IEnumerable<string> selectedBusinessUnit检查数据库中的值。更像SQL";IN";查询

这是我的代码:

public class ProjectsSearchViewModel
{
        public IEnumerable<string> selectedBusinessUnit { get; set; }  //Selected Revenue Organization (Business Unit)
        [Display(Name = "Business Unit")]
        public IEnumerable<SelectListItem> BusinessUnits { get; set; } //populate list of business units from database for the listbox
    }

//我的视图

@Html.LabelFor(m => m.BusinessUnits, new { @class = "col-md-4 control-label" })
@Html.ListBoxFor(m => m.selectedBusinessUnit, Model.BusinessUnits, new { @class = "form-control", type = "dropdownlist", size = 5 })

//控制器

if (projectsSearchViewModel.selectedBusinessUnit != null)
                {                
                    result = result.Where(x => x.Project.Revenue_Organization.Contains(projectsSearchViewModel.selectedBusinessUnit));}

它说无法将IEnumerable转换为字符串

有人成功地做了这样的事情吗。如果是的话,我很想知道怎么做。

更多代码

 var results = (from project in db.Projects
         join emp in db.Employees
         on project.Project_Manager equals emp.Employee_ID
         select new ProjectsList
         {
             Project = project,
             Employee = emp
         });

Revenue_organization是项目表(项目对象)中的一列(如果你喜欢的话,可以是属性),以防有人想知道。因此,我正在寻找的最终结果是获得revenue_organizationIN选择业务单元

使用LINQ对IEnumerable项目列表进行IN查询

列表的项目列表

假设Project.Revenue_Organization是一个字符串,则需要反转该语句。集合应该包含字符串,但当您编写它时,它会检查字符串是否包含集合(这没有意义)。

result = result.Where(x => projectsSearchViewModel.selectedBusinessUnit.Contains(x.Project.Revenue_Organization));}

您在错误的对象上使用Contains。相反:

result = result.Where(x => 
   projectsSearchViewModel.selectedBusinessUnit.Contains( 
   x.Project.Revenue_Organization));

我有这样的假设:

projectsSearchViewModel.selectedBusinessUnit是一个IEnumerable。x.Project.Revue_Organization是一个字符串值(数据库中要进行"in"查询的列)。