是否可以在此添加另一個where子句,還是需要創建另一個foreach?如何在此foreach上添加另一個where子句?
foreach (Point point in _Points.Where(x => x.Name == "Test"))
{
}
基本上我也想補充的是,其中x.name = "Test"
& &其中!x.asset.StartsWith("INV")
是否可以在此添加另一個where子句,還是需要創建另一個foreach?如何在此foreach上添加另一個where子句?
foreach (Point point in _Points.Where(x => x.Name == "Test"))
{
}
基本上我也想補充的是,其中x.name = "Test"
& &其中!x.asset.StartsWith("INV")
你可以把它在同一個WHERE子句:
foreach (Point point in _Points.Where(x => x.Name == "Test" && !x.Asset.StartsWith("INV"))
{
你錯過了'x'。即x => x.Name'。 – 2012-04-10 19:47:47
我已將此部分添加到此答案。 – 2012-04-10 19:49:07
@ChuckNorris謝謝;) – 2012-04-10 19:52:04
以上就可以了,但你也可以做
_Points.Where(x => x.Name == "Test" && !x.Asset.StartsWith("INV")).ToList().ForEach(yourmethod());
這將與ToList()調用一起工作,但我認爲這是一個非常糟糕的主意......我推薦閱讀:http://blogs.msdn.com/b/ericlippert /archive/2009/05/18/foreach-vs-foreach.aspx – 2012-04-10 19:52:49
現在,它的工作原理!但我仍然認爲這是一種更糟糕的方法:爲什麼在不需要時分配內存? 「foreach」循環已經很可讀了。如果你把查詢放在一個變量中,甚至更多:'foreach(myQuery中的var項){..}'非常簡單。 – dlev 2012-04-10 19:54:10
我認爲我們在這裏流利與功能領域。 :) – Maess 2012-04-10 19:56:30
是你可以爲一個更加其中這裏在
foreach (Point point in _Points.Where(x => x.Name == "Test")
.Where(x=>!x.asset.StartsWith("INV")))
{
}
或更好的去
foreach (Point point in _Points.Where(x => x.Name == "Test" && !x.asset.StartsWith("INV")))
{
}
你也可以連接在LINQ運營商
foreach (Point point in _Points
.Where(x => x.Name == "Test")
.Where(x => !x.asset.StartsWith("INV")))
{
}
有時我覺得它更可讀與Where
鏈接,而不是在一個表達式中混入大量的&&
。
另外請注意,在這種情況下,良好的換行可以提高可讀性。
我相信你已經回答了你自己的問題:'x => x.Name ==「Test」&&!x.asset.StartsWith(「INV」)' – dlev 2012-04-10 19:46:17
good call !!! : - | – mameesh 2012-04-10 19:48:50
當你嘗試時發生了什麼? – gdoron 2012-04-10 19:50:03