この権利を得るために苦労します。 私はビューのListBox multiselectをバインドするためにIenumerable BusinessUnitsを持つモデルビューを持っており、選択した値を保持するIenumerable selectedBusinessUnitを持っています。 複数の値を選択してコントローラにポストバックすると、linqクエリを使用してデータベースの値をIEnumberable selectedBusinessUnitに対してチェックするのに苦労しています。 SQLの "IN"クエリによく似ています。INクエリはLINQをIEnumerableに使用します。
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を変換することはできませんと言いますsomこれはうまくいくようなものです。もしそうなら、方法を知りたいと思うだろう。 (必要であればプロパティ)
もっとコード
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は、いずれかが疑問に思っている場合には(プロジェクトオブジェクト)プロジェクトのテーブルの列の一つです。私はbusinessunits
'result = result.Where(x => x.Project.Revenue_Organization.Contains(projectsSearchViewModel.selectedBusinessUnit));'。 'projectsSearchViewModel.selectedBusinessUnit'はIEnumerableです。あなたはcontainsを使用できません。ステートメントを 'result = result.Where(x => x.Project.Revenue_Organization.Contains(projectsSearchViewModel.selectedBusinessUnit.FirstOrDefault())); ' –
din
に変更します。' Revenue_Organization'プロパティのタイプは? – Shyju
@shyuプロパティは文字列です – vish