实体框架-asp.net mvc 3 EF HTML多选-如何使用LINQ检索多个值



我有一个高级搜索表单,它包含、输入框、下拉列表等。现在我想将下拉列表更改为多选列表。

我可以设置视图,如下所示:

@Html.ListBoxFor(model => model.IdState, null, new { size = "7" })

但我不知道如何从更改控制器

public ActionResult Index(FormData model)
{
    IQueryable<mytable> results = from s in db.mytable.Include("State").where(s=> (model.IdState != null ? s.IdState == model.IdState : true)) select s;
    return View(result);
}

到多重IdState结果???

早些时候的IdState是:

int IdState;

现在是:

IEnumerable<int> IdState;

谢谢你抽出时间!

我还是做不到。在SQL中将是:

SELECT * FROM MyTable WHERE IdState IN (1,2,5,7,10)

有什么想法吗?这个http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx不显示类似情况

解决方案

我在这次讨论中发现:http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/095745fe-dcf0-4142-b684-b7e4a1ab59f0/这个代码片段:

IQueryable<Foo> foos = context.Foo.Where("it.Id in {1, 2, 3, ...}");

我换了

string sState = "";
foreach (int a in model.IdState ) sState += (a.ToString() + ",");
sState = sState .Substring(0, sState .Length - 1);
IQueryable<mytable> results = from s in db.mytable.Where("it.IdState in {" + sState + "}");

而且效果很好!!!

我希望能找到最终的解决方案

而不是

s.IdState == model.IdState 

尝试使用

model.IdState.Contains(s.IdState)

相关内容

  • 没有找到相关文章

最新更新