Linq to object簡單描述

2022-05-10 17:42:11 字數 1248 閱讀 9095

學習linq to object時,經常會遇到linq to object問題,這裡將介紹xx問題的解決方法。

普通儲存過程,首先在查詢分析器執行下面的**來建立乙個儲存過程:

create proc sp_singleresultset

asset nocount on

select * from customers

然後開啟ide的伺服器資源管理器,之前我們從表中拖動表到dbml設計檢視,這次我們從儲存過程中找到剛才建立的儲存過程,然後拖動到設計檢視。在方法面板中可以看到已經建立了乙個sp_singleresultset的方法

然後開啟northwind.designer.cs,可以找到下面的**:

[function(name="dbo.sp_singleresultset")]

public isingleresultsp_singleresultset()

我們可以發現,ide為這個儲存過程單獨生成了返回結果集的實體定義,你可能會覺得很奇怪,ide怎麼知道這個儲存過程將會返回哪些資料那?其實,在把儲存過程拖拽入dbml設計檢視的時候,ide就執行了類似下面的命令:

set fmtonly on;

exec northwind.dbo.sp_singleresultset

set fmtonly off;

這樣就可以直接獲取儲存過程返回的元資料而無須執行儲存過程。

其實我們儲存過程返回的就是顧客表的資料,如果你覺得為儲存過程單獨設定結果集實體有些浪費的話可以在儲存過程的屬性視窗中調整返回型別從「自動生成的型別」到customer,不過以後你只能通過刪除方法面板中的儲存過程,然後重新新增來還原到「自動生成的型別」。下面,我們可以寫如下的linq to object**進行查詢:

var 單結果集儲存過程 = from c in ctx.sp_singleresultset()

where c.customerid.startswith("a")

select c;

在這裡確實是linq to object的,因為查詢句法不會被整句翻譯成sql,而是從儲存過程的返回物件中再去對物件進行查詢。sql**如下:

exec @return_value

= [dbo].[sp_singleresultset]

-- @return_value: output int32 (size

= 0; prec

= 0; scale

= 0)

C 學習筆記 LINQ to Object

1 linq特有的程式設計結構 隱式型別本地變數 c 的var關鍵字允許定義不顯式指定實際資料型別的本地變數。不過由於編譯器將根據初始值推斷其資料型別,所有該變數仍然是強型別的。物件和集合初始化語法 它允許我們在建立類或結構變數的同時設定其屬性。lambda表示式 c lambda操作符 可以用來構...

描邊 深度 Outline描邊

描邊 使用兩個pass繪製兩遍模型,第一遍需要讓模型的每個頂點朝著法線方向外擴,然後使用cull front指令,剔除正面,只渲染背面。第二遍再做一遍普通的渲染,使之蓋住第一遍渲染的影象,就會產生描邊效果。材質面板 color 第二遍普通渲染模型混合顏色。main texture 第二遍普通渲染模型...

shape 描邊只描邊上下

今天遇到了乙個描邊的問題,用shape描邊大家都知道stroke來調。但是,要求是只描邊上邊和下邊,左邊右邊不需要,那麼就沒法了,stroke預設是全部描邊。xmlns android android left 2dp android right 2dp android color 背景色 andr...