"int"中不包含"Contains"的定义,最佳的扩展方法重载是"Queryable.Contains"。

3

我想通过ID筛选网格视图,但我的语法有错误

这是我的HomeController:

public ActionResult Index(int searching)
{
   return View(db.ex_op.Where( x => x.id_ats.Contains(searching) || searching = null).ToList());
}

这是我的HomeView:

@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
    @Html.TextBox("searching")
    <input type="submit" value="Search" />
}

这是我的错误:

'int' 不包含名为 'Contains' 的定义,最佳的扩展方法重载 'Queryable.Contains(IQueryable,int)' 需要类型为 'IQueryable' 的接收器```

非常感谢!


你试图调用 int.Contains,而实际上你需要使用 ==,即 Where( x => x.id_ats == searching) - abatishchev
1个回答

4
你应该从 .Contains() 改为 ==,以便比较 int
public ActionResult Index(int searching)
{
   return View(db.ex_op.Where( x =>  searching == null || x.id_ats == searching ).ToList());
}

如果你仍然想通过Contains进行过滤,你可以将.ToString()与参数的类型转换为string,像这样:

public ActionResult Index(string searching)
{
   return View(db.ex_op.Where( x => searching == null || x.id_ats.ToString().Contains(searching)).ToList());
}

更新

基本上,除非你使用可空整型(int? searching),否则 int 的默认值是零,因此不需要检查 null

db.ex_op.Where( x => x.id_ats == searching).ToList()

1
嘿,应该使用 searching == null 而不是 searching = null - Nguyễn Văn Phong
1
顺便提一下,“searching == null”没有意义,因为“searching”是“int”,这意味着条件始终为真(int永远不会为“null”)。但“int?”可能为空。 - abatishchev
是的,当没有值时应该为零,先生。 - Nguyễn Văn Phong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接