我们可以将此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。它只需点击一下即可完成。严格地说,你的问题的正确答案是**是**。如果你问“请为我做这件事”,这可能会有助于显示你尝试过什么以及你卡在哪里。 –