[英]How Linq query fetch data from multiple tables without using join
我的數據庫中有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));
}
我剛剛實現並檢查了我的本地相同查詢,並且工作正常,給出的答案是正確的@Khairul Alam,
我剛剛優化了代碼,並在本地運行相同的代碼
var searchString = "School";
if (!String.IsNullOrEmpty(searchString))
{
var query1 = _context.Jobs.Where(s =>
s.JobTitle.Contains(searchString)
|| s.LocationDescription.Contains(searchString));
var query2 = _context.Recruiters.Where(s =>
s.RecruiterName.Contains(searchString));
var query3 = _context.Sectors.Where(s =>
s.SectorName.Contains(searchString));
try
{
var finalResult = query1.Select(x => x.JobTitle).Union(query2.Select(x => x.RecruiterName)).Union(query3.Select(x => x.SectorName)).ToList();
}
catch (Exception)
{
throw;
}
包含輸出最終結果的圖像
如果您仍然遇到問題,請分享一些代碼或您確切地在哪里得到錯誤,以便我們解決
希望對您有幫助
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.