搜索字符串拉取多个查询时出现问题
本文关键字:问题 查询 字符串 搜索 | 更新日期: 2023-09-27 18:35:43
我正在尝试获取我编写的 SearchIndex 以根据某人输入的字符串查询多个数据库表。 数字搜索工作正常,但我无法弄清楚如何让它也搜索其他表。 这是在 MVC3 中完成的。
public ActionResult SearchIndex(string searchString)
{
var number = from m in db.Numbers
select m;
if (!String.IsNullOrEmpty(searchString))
{
number = number.Where(s => s.Numbers.Contains(searchString));
}
var assignment = from m in db.Numbers
select m;
if (!String.IsNullOrEmpty(searchString))
{
assignment = assignment.Where(s => s.Numbers.Contains(searchString));
}
return View(number);
}
也作为侧节点
select m;
这到底是做什么的?
你可以这样做:
var mySearchResult = from m in db.MyOtherTables
where m.MyField.Contains(searchString)
select m;
要了解"m"在这里做什么,你需要了解Linq。有很多好的教程,你必须谷歌一下。
以下是 MSDN:LINQ(语言集成)查询)。
这是我最喜欢的 Scott Gu 将 LINQ 与 ASP.NET 一起使用(部分1)
- 这是另一个:LINQ to Entities:基本概念和特征。
编辑 您的方法可能如下所示(只是一个示例):
public ActionResult SearchIndex(string searchString, string tableName)
{
if (!String.IsNullOrEmpty(searchString) && !String.IsNullOrEmpty(tableName))
{
switch (tableName.ToLower())
{
case "number":
var numbers = from m in db.Numbers
where m.Number.Contains(searchString)
select m;
//View "Number" should use strongly typed IEnumerable<Number>
return View("Number", numbers);
case "assignment":
var assignments = from m in db.Assignments
where m.AssignmentName.Contains(searchString)
select m;
//View "Assignment" should use strongly typed IEnumerable<Assignment>
return View("Assignment", assignments);
//Add cases for other each tables
case "mytable":
var mytables = from m in db.MyTables
where m.MyField.Contains(searchString)
select m;
//View "MyView" should use strongly typed IEnumerable<MyView>
return View("MyView", mytables);
default:
return RedirectToAction("Index");
}
}
return RedirectToAction("Index");
}
希望对您有所帮助!