我寫了Linq查詢來更快地檢索記錄。但它需要更多的時間來檢索,而傳遞本地收集值Linq查詢:LinQ:如何編寫單個查詢來以有效方式傳遞List /字符串集合時檢索記錄?
在這裏我工作LinQ查詢與實體框架。我需要基於作爲字符串集合傳遞的所有platformId獲取forumthread這裏
目標:我們如何使用更有效的方式在單個linQ查詢中檢索具有匹配id集合的記錄? 例如:慢速執行查詢:
public void GetThreadCollection(string[] platformid)
{
using (SupportEntity support=new SupportEntity())
{
var ThreadCollection = (from platid in platformid
from thread in support.ForumThread
from platform in support.Platforms
where platid == thread.Platformid &&
platform.PlatformId==platid
select new
{
ThreadId = thread.threadid,
Title = thread.Title,
description = thread.desc,
platformName = platform.platformName
}).ToList();
}
}
例如:然後我重寫代碼通過發送單獨的平臺ID使用迭代來檢索記錄,以避免緩慢的執行時間:每個:但是這也需要更多的時間少上一個。但效率不高。
例如:
public function(string[] platformId)
{
foreach(platid in platformId)
{
using (SupportEntity support = new SupportEntity())
{
var Threads = (from thread in support.ForumThread
from platform in support.Platforms
where platid == thread.Platformid &&
platform.PlatformId == platid
select new
{
ThreadId = thread.threadid,
Title = thread.Title,
description = thread.desc,
platformName = platform.platformName
}).ToList();
ThreadCollection.AddRange(threads);
}
}
}
能否請你建議,如何獲得寫單查詢檢索記錄在一個單一的查詢更有效?
感謝您的建議。它的工作效率更高。 – Anandh
你能解釋爲什麼Linq查詢過程在執行本地集合時使用sql server集合[table]會變慢嗎? – Anandh
@Anandh嘗試使用ObjectQuery.ToTraceString比較生成的SQL:'((ObjectQuery)(from ...))。ToTraceString()' – nmclean