2013-03-31 37 views
0

我们可以将此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); 
     } 
    } 
} 
+0

为什么?它是可读的。你不会得到任何性能优势。 –

+0

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

回答

1
from n in lnd 
from s in Pages 
where n.NiceUrl == s 
select n 
+0

这是一样好,因为它是完全说明性的。 –

0
Pages.Where(y => lnd.Select(x => x.NiceUrl).Contains(y)).Tolist(); 

lnd.Select(X => x.NiceUrl)部分可以用一个HashSet来代替。

1
sds = lnd.Join(Pages, n => n.NiceUrl, p => p, (n, p) => n).ToList(); 
+0

也许关于你的代码如何工作的一点解释会对其他读者有所帮助? – Verbeia

相关问题