我正在研究ASP .NET MVC 5
Web應用程序並試圖實現搜索功能。我有Renders
具有大約14個屬性的實體,它們是many-to-many
或one-to-one
的關係。用戶使用複選框中選擇屬性,所以我的代碼是這樣的:突變linq查詢以返回所需結果
if (Request.QueryString["attr1"] != "")
{
// linq query that gets all the render according to the request
// to the database that gets converted to t-sql
}
我有幾個if
語句像上面一個代碼,現在我已經修改了我這樣的代碼:
var loadedRenders = _db.Renders.Include(r => r.Images)
.Include(m => m.DisplayFormats)
.Include(m => m.DisplayMethods)
.Include(m => m.DominantColors)
.Include(m => m.DrapeTypes)
.Include(m => m.CeilingHeights)
.Include(m => m.RiggingTypes)
.Include(m => m.HardSets)
.Include(m => m.SoftSets)
.Include(m => m.BackDrops)
.Include(m => m.SeatingTypes)
.Include(m => m.StageTypes)
.Include(m => m.VenueType)
.Include(m => m.EventTypes)
.ToList();
if (Request.QueryString["attr1"] != "")
{
// query that filters the renders in loadedRenders using
// linq
}
查詢1:
renders = renders.Union(loadedRenders
Where(r => term != null && (r.Title.Contains(term) || r.ClientName.Contains(term) || r.JobId == (term) && r.ActivateRender))).ToList();
問題2:
renders = renders.Union(_db.Renders.Include(r => r.Images)
.Include(m => m.DisplayFormats)
.Include(m => m.DisplayMethods)
.Include(m => m.DominantColors)
.Include(m => m.DrapeTypes)
.Include(m => m.CeilingHeights)
.Include(m => m.RiggingTypes)
.Include(m => m.HardSets)
.Include(m => m.SoftSets)
.Include(m => m.BackDrops)
.Include(m => m.SeatingTypes)
.Include(m => m.StageTypes)
.Include(m => m.VenueType)
.Include(m => m.EventTypes)
.Where(r => term != null && (r.Title.Contains(term) || r.ClientName.Contains(term) || r.JobId == (term) && r.ActivateRender))).ToList();
問:
兩個查詢正在返回不同的結果,我想原因是因爲他們中的一個在T-SQL
執行和Linq
他們的,我不知道我是否正確,但我想問的是,有什麼方法可以使Query 1
返回與Query 2
相同的結果嗎?
這並沒有什麼區別,因爲我的兩個查詢都有這個條件......檢查編輯 – 2015-04-02 07:06:11
它在query2中,但是paranthesis是錯誤的。 – 2015-04-02 07:07:20
檢查編輯,我從loadedRenders中刪除它,我認爲區別是因爲「Contains」...那可能嗎? – 2015-04-02 07:12:48