LINQ與動態型別

2021-09-17 19:08:22 字數 555 閱讀 6234

c# 3的最大特點就是linq技術。隨著c# 4的到來,看起來動態型別似乎將要大出風頭了。但你可以讓它們一起使用嗎?

\ linq的一項核心功能就是擴充套件方法。擴充套件方法允許通用函式可以新增到像ienumerable那樣的介面中去。擴充套件方法實質上是一項編譯器技巧,即使用所有匯入的本地命名空間結合變數的靜態型別,來決定合適的函式呼叫。對於動態變數,該變數型別直到執行時為止都是未知的。不過到那個時候,關於匯入那個命名空間的資訊早已不復存在。

\ 匿名函式對於linq同樣重要。匿名函式在c#中被靜態地編譯為真實的函式,使用上下文來確定要暴露什麼引數型別。沒有已知的型別,該編譯器不得不把型別物件作為引數暴露出來,這樣有些事情它通常就做不了。

\ 這兩種侷限不是不能克服。無任何理由解釋編譯器為什麼不能捕獲編譯時上下文,確定哪個擴充套件方法需要繫結。同樣地,它可暴露型別物件的匿名函式,把函式和屬性呼叫還原為動態呼叫。但是很多語言發展緩慢,根據mads torgersen的說法,並不計畫在c#4中解除這些限制。

\ 在c#的未來站點上,你可以找到更多資訊。

\檢視英文原文:linq and dynamic typing

Linq 動態查詢

最近在做專案中用到了linq to sql,在用的時候感覺很,寫的 也少 提高了開發的週期 但是在開發的過程中我們還是碰到很多的東西,由於是第一把linq用到專案中,原來是寫個小的demo 沒有過多的用到他的優點 看看我的文件目錄吧 第二 就可以寫查詢的 了 public partial class...

Linq 動態查詢

如果是傳統的應用程式開發,採取動態拼 sql字串的形式就可以解決了,但linq 是沒辦法間歇性判斷而拼接.首先ui上查詢條件的專案往往並不確定,如上圖目前有城市 訂單數目,將來可能有新的專案要增加,結果將導致 頻繁更改,對於這種情況無論是拼sql時代,還是如今的linq都不太容易應對,故而當有新的查...

linq動態查詢

近日做幾個專案用到linq動態查詢,但微軟官方所提供的那些動態查詢機制相當複雜,網上也有不少發過一些動態查詢的方案,本人覺得那些方案比較繁索,也不易理解,今提供一種易理解簡單實用的方法.方法如下 在中間層寫 public listgettransferlogbycondition datetime?...