2010-09-06 76 views
1

使用ReSharper,我偶爾會爲LINQ操作導入命名空間的快速修復建議。因此,考慮下面的代碼在一個全新的類:System.Linq.Dynamic和System.Linq之間的區別?

linqToSqlDataContext.Customers.Count(); 

我得到一個速戰速決的下拉如下:

alt text

我應該選擇哪一個,和之間有什麼區別他們?

回答

3

System.Linq.Dynamic是Dynamic LINQ的命名空間。除非您已經添加了對Dynamic LINQ程序集的引用,否則您不應該將其看作是一個選項。你有沒有這樣做? 你應該這樣做,如果你真的想要使用動態LINQ。

動態LINQ允許您將查詢表示爲文本 - 有點像DataTable.Select。我個人從未發現它的用途,但你可能想要它。這應該是一個慎重的選擇。大多數情況下,你可以使用靜態類型的LINQ to Objects。

編輯:根據OP的評論,動態LINQ的代碼可能已直接添加到項目中,而不是作爲單獨的程序集引用。即使你實際上想要使用動態LINQ,我強烈建議將它保存在一個單獨的程序集中,而不是將它與自己的代碼混合。

+0

+1我會接受這個答案,如果你可以更新的概念(根據我自己的答案)有人可以添加實際的DynamicLinq擴展類直接到項目(即不是一個參考,但實際的代碼在項目中)。 – 2010-09-06 23:04:31

+0

@ Neil:Eewww :)但回答正式編輯... – 2010-09-07 05:26:45

+0

哦,來吧,嚴重嗎?我看到你的「製作C#做可能會導致世界末日的可怕事情」在NxtGenUG在伯恩茅斯舉行的「Fest 10」上演講......:P但是,是的,「eewww」的確如此。 :) – 2010-09-07 08:09:56

1

動態LINQ是一個non-typesafe version of LINQ.這需要字符串而不是lambda來生成查詢。

除非您需要任何專家功能,否則這將使您使用Enumerable版本。

1

Scott Hanselman做了DynamicQueryable的good explanation。基本上它允許你在運行時參數可能改變的地方有更多的活力。

相關問題