這是「更好」,更快,更容易閱讀:嵌套Linq比foreach循環更快嗎?
var viewsOnSheet = templateSheet.GetAllViewports()
.Select(x => doc.GetElement(x))
.Cast<Viewport>()
.Select(x => doc.GetElement(x.ViewId))
.Cast<View>();
...比這
foreach (ElementId id in templateSheet.GetAllViewports())
{
Viewport vp = doc.GetElement(id) as Viewport;
View v = doc.GetElement(vp.ViewId) as View;
}
他們都工作,我只是好奇,如果有一些編程標準,我會被這麼多嵌套的Linq調用違反。什麼更容易理解?我個人傾向於foreach
循環。
謝謝!
嗯,在這種情況下,我不會使用'as' - 如果類型錯誤,您寧願有一個描述性的'InvalidCastException'或一個'NullReferenceException',它不會告訴您這個元素是否實際上是null或對錯誤類型的非空引用?我可能會使用LINQ,但將演員直接放入「Select」調用中,而不是調用「Cast」。 –
因此而不是'.Select(x => doc.GetElement(x))''你會說'去選擇(x =>(視口)doc.GetElement(x))'? – konrad
是的,我會的。但這實際上是一個基於意見的問題。 –