c# - Linq 查询如何在不使用连接的情况下从多个表中获取数据
问题描述
我的数据库中有 3 个表,它们彼此没有关系。我想要的是在我的网站上实现搜索操作。因此,当在搜索框中提交单词时,查询会遍历所有表并在找到该单词的任何位置获取数据。我可以从单个表中获取数据。
public ActionResult Searchresult(string searchString)
{
var article = (from c in db.Tbl_Article select c );
article = article.Where(s => s.Article_Title.Contains(searchString));
var blog = (from c in db.Tbl_Blog select c );
blog = blog.Where(s => s.Blog_Title.Contains(searchString));
var history = (from c in db.Tbl_History select c);
history = history.Where(s => s.Title.Contains(searchString));
var result = article.Select(x => x.Article_Title).Union(blog.Select(x => x.Blog_Title)).Union(history.Select(x => x.Title)).ToList();
// ViewBag.result = result.ToString();
return View(result);
}
请不要混淆我在操作方法中返回的内容,对于该问题,它是一个非常长且不必要的代码。
通过使用此代码,我成功地从一个表中获取了搜索结果。现在我想从数据库中存在的所有表中得到相同的结果。这就是我卡住的地方。我为此搜索了很多文章,但没有找到任何解决方案,这是我自己最后一次提出的问题。
谢谢
解决方案
这可能有效
Public ActionResult Index(string searchString)
{
var query1 = (from c in db.TableArticle select c);
if (!String.IsNullOrEmpty(searchString))
{
query1 = query1.Where(s =>
s.Article_Title.Contains(searchString)
|| s.Article_Description.Contains(searchString) ||
s.Written_By.Contains(searchString) ||
s.Organisation.Contains(searchString)
||s.Source.Contains(searchString));
}
var query2 = (.......);
var query3 = (.......);
var finalResult = query1.Select(x => x.columnName).Union(query2.Select(x => x.columnName)).Union(query3.Select(x => x.columnName));
// OR
var finalResult = query1.Select(x => x.columnName).Concat(query2.Select(x => x.columnName)).Concat(query3.Select(x => x.columnName));
}
推荐阅读
- java - java中for循环的最小和最大结果
- wordpress - Woocommerce 电子邮件模板更新并从用户表中获取字段
- json - 仅填写在接口定义的字段
- ibm-cloud - 我正在使用 IBM analytica - 并试图通过安全网关与我的本地 mongodb 建立连接
- pointers - 如何在 Go 中使用 Win32 的 GetRawInputDeviceList?
- javascript - R中的父/子行
- amazon-web-services - S3Client 和 Quarkus Native App Issueu with Runn
- django - Django Rest Framework 序列化程序验证一个的通过,但在另一个上失败
- asp.net-mvc - 在 Task.Run 中调用异步方法
- excel - 如何在 EXCEL 中的活动行中选择一列以使用 VBA 粘贴到单独的工作表上?