【问题标题】:'int' does not contain a definition for 'Contains' and the best extension method overload 'Queryable.Contains'int' 不包含 'Contains' 的定义和最佳扩展方法重载 'Queryable.Contains
【发布时间】:2020-03-05 01:25:04
【问题描述】:

我想按 ID 过滤网格视图,但我的语法有问题

这是我的 HomeController:

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

这是我的主视图:

@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 =&gt; x.id_ats == searching)

标签: c# asp.net-mvc entity-framework linq


【解决方案1】:

您应该从 .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?搜索)什么是可空的intint的默认值是零,所以你不需要检查null

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

【讨论】:

  • 嘿,searching == null 而不是 searching = null
  • btw searching == null 没有意义,因为 searchingint 这意味着条件始终为真(int 永远不是 null)。 int? 可能为空。
  • 是的,没有价值的时候应该是零,先生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多