Category: linq

ASP.NET Web API支援OData,可以藉由URL加註$filter、$orderby、$skip、$top參數,對資料進行條件篩選、排序、分頁等加工(關於ASP.NET Web API OData特性,可參見KKBruce的文章)。而要啟用OData,有項重要前題是回傳資料型別必須為I...

一開始,我只是為了某個Knockout程式範例,打算花十分鐘把3+2郵遞區號XML轉檔程式稍做整理,改寫成輸出3碼資料JSON而已,沒想到魔鬼都在細節裡,資料裡幾則特殊案例,搞得我手忙腳亂汗水直滴,最後花了一個半小時才達成目的,驗證傳說中"工程師預估的時程根本是放屁只能純參考"所言不虛... ...

自從經前輩醍糊灌頂,學會"未分配數量 * (權重 / 尚未分配權重總和)"一次到位的無尾差分贓演算法後,開心地用了好幾年,後來更演化出LINQ進化版,從此在.NET中要分贓算錢如虎添翼! 幾年下來,未曾得接獲於此演算法的缺點回饋,於是它在我心中一直維持完美無瑕的女神形象! 直到最近一個極端例子讓我...

對於長年與資料庫、SQL語法打交道的開發者來說,LINQ語法有無比的親切感! 當要在List<SomeClass>集合中找尋特定物件時,寫成    form o in SomeList where o.Col1 == "A" &&...

很久前曾寫過一篇範例,介紹將數字金額依不同權重拆成多筆的分贓程式寫法,最近專案又再度陷入算錢的漩渦,但局面有點改變。近一兩年被.NET 3.5/.NET 4寵壞了,已經有點"不用LINQ不會寫Code"的傾向,因此現在寫的帳務程式,就大量引用了List<SomeObject>的技巧處...

今天在寫程式時,發現LINQ to SQL在管理物件上的特殊規則,做個筆記。 假設我們有一個Member資料表如下: 有一段程式,其中很取巧的用Member去承接ExecuteQuery的執行結果,前後取得四顆物件,放入一個List中: (在我的實際案例中,是SELECT另一個Table的不同欄...

同事今天問了一個LINQ下使用多條件比對產生LEFT JOIN的問題,讓我也學到了新東西,特地PO文備忘。 這回不寫程式,直接用威到不行的LINQPad做示範。 假想的題目是有個員工資料表Employee,Primary Key是DeptId及UserId,除了UserName,另有Subs...

上回提到LINQ to SQL兩段式更新時,經網友提醒有Attach()這個好東西,今天試了一下,結果發現它並不是我所原本想像的好東西,用起來得費一些手腳。 MVP Rick Strahl對這個議題有兩篇文章(1, 2)做了深入探討,因此細節我就不再贅述,但簡單歸納一下我的整理: Table...

一般而言,我們使用LINQ to SQL更新資料時,程序為: 建立DataContext 透過from o in ... where ... select o 取出某筆資料物件(例如: m) 設定新值,例如: m.Property = newValue DataContext....

最近在測試devart dotConnect for Oracle的LINQ to Oracle,發現應用在ASP.NET Web Site Project時,必須要完成一些部署步驟才能順利在另一台伺服器運作。我整理如下: 部署DLL有幾個選擇 :1) 在伺服器上執行dotConnect for...

來個LINQ to SQL機車考題。 有一SQL資料表如下: 請問,若不用DataContext.ExecuteQuery(),有無可能使用LINQ語法轉換出如下的SQL指令? SELECT COUNT(*) FROM Member WHERE RegTime < GETDATE() A...

依照資料庫的效能原則 -- 進行SELECT查詢時,應只選取必要欄位,選取欄位數愈少愈好。 以SELECT * FROM Attachment為例,假設資料有1萬筆,其中還有個Content欄位存放檔案的二進位內容,若平均檔案大小為1M,這個查詢動作將會引發10GB的磁碟機存取及網路傳輸量。如果我們...

今天意外發現,LINQ to SQL在轉譯CHAR(1)欄位比對時,可能因寫法不同而產生極無效率的SQL指令! 當資料表的欄位為CHAR(1)時,在DataContext裡產生的對應物件型別是char,而我們直覺上可能寫成CharCol == 'A'的比對條件。但今天發現一件可怕的事... Ch...

跟同事討論在新專案中開始採用LINQ,但有些古老元件的API只接受DataTable參數,我想到以前想過可以利用Reflection將LINQ查詢結果轉成DataTable,花了點時間,參考網路上的文章,整理成以下範例: using System;using System.Collection...

使用LINQ to SQL時,難免會遇到基於簡潔效率考量需要直接下SQL指令的場合。依我的習慣,遇到這類情境我就不用LINQ寫法硬幹了。DataContext物件提供了ExecuteCommand及ExecuteQuery兩個方法,可以直接撰寫有效率的SQL語法,交給DB執行批次更新動作或取回複合...