簡體   English   中英

Linq查詢如何在不使用聯接的情況下從多個表中獲取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM