我們可以將此For循環轉換爲LINQ表達式;在查詢語法和方法語法中?我們可以將這個For-loop轉換成LINQ嗎?
List<INode> sds = new List<INode>();
foreach (INode n in lnd)
{
foreach(string s in Pages)
{
if (n.NiceUrl == s)
{
sds.Add(n);
}
}
}
我們可以將此For循環轉換爲LINQ表達式;在查詢語法和方法語法中?我們可以將這個For-loop轉換成LINQ嗎?
List<INode> sds = new List<INode>();
foreach (INode n in lnd)
{
foreach(string s in Pages)
{
if (n.NiceUrl == s)
{
sds.Add(n);
}
}
}
from n in lnd
from s in Pages
where n.NiceUrl == s
select n
這是一樣好,因爲它是完全說明性的。 –
Pages.Where(y => lnd.Select(x => x.NiceUrl).Contains(y)).Tolist();
lnd.Select(X => x.NiceUrl)部分可以用一個HashSet來代替。
sds = lnd.Join(Pages, n => n.NiceUrl, p => p, (n, p) => n).ToList();
也許關於你的代碼如何工作的一點解釋會對其他讀者有所幫助? – Verbeia
爲什麼?它是可讀的。你不會得到任何性能優勢。 –
嘗試resharper。它只需點擊一下即可完成。嚴格地說,你的問題的正確答案是**是**。如果你問「請爲我做這件事」,這可能會有助於顯示你嘗試過什麼以及你卡在哪裏。 –