整理一下Entity Framework的查詢

2022-01-30 11:19:40 字數 3676 閱讀 7681

entity framework是個好東西,雖然沒有hibernate功能強大,但使用更簡便。今天整理一下常見sql如何用ef來表達,func形式和linq形式都會列出來(本人更喜歡func形式)。

1、簡單查詢:

sql:

select * from [clients] where type=1 and deleted=0 order by id

ef://func形式

var clients = ctx.clients.where(c => c.type == 1 && c.deleted == 0)

.orderby(c => c.id)

.tolist();

//linq形式

var clients = from c in ctx.clients

where c.type == 1 && c.deleted==0

orderby c.id

select c;

2、查詢部分字段:

sql:

select id,name from [clients] where status=1

ef://func形式

var clients = ctx.clients.where(c => c.status == 1)

.select(c => new )

.tolist();

//linq形式

var clients = from c in ctx.clients

where c.status == 1

select new ;

3、查詢單一記錄:

sql:

select * from [clients] where id=100

ef://func形式

var client = ctx.clients.firstordefault(c => c.id == 100);

//linq形式

var client = (from c in ctx.clients

where c.id = 100

select c).firstordefault();

4、left join 連線查詢

sql:

select c.id,c.computername,g.name groupname 

from [clients] c 

left join [groups] g

on c.groupid = g.id

where c.status=1

ef://func形式

var clients = ctx.clients.where(c => c.status == 1)

.select(c => new 

) .tolist();

//linq形式

var clients = from c in ctx.clients

where c.status == 1

select new

;5、inner join 連線查詢:

sql:

select c.id,c.computername,g.name groupname 

from [clients] c

inner join [groups] g

on c.groupid = g.id

where c.status=1

order by g.name

ef://func形式

var clients = ctx.clients.where(c => c.status == 1)

.join(ctx.group, c => c.groupid, g => g.id, (c,g) => 

) .orderby(item => item.groupname)

.tolist();

//linq形式1

var clients = from c in ctx.clients

from g in ctx.groups

where c.groupid == g.id

orderby g.name

select new

; //linq形式2

var clients = from c in ctx.clients

where c.status == 1

join g in ctx.group

on c.groupid equals g.id into result

from r in result

order by r.name

select new

;

6、分頁

sql:

-- 方案1

select top 10 * from [clients] where status=1

and id not in 

( select top 20 id from [clients] where status=1

order by computername

) order by computername

--方案2

select * from

( select *, row_number() over(order by computername) as rowno

from [clients]

where status=1

)t where rowno >= 20 and rowno < 30

ef://func形式

var clients = ctx.clients.where(c => c.status=1)

.orderby(c => c.computername)

.skip(20)

.take(10)

.tolist();

//linq形式

var clients = (from c in ctx.clients

orderby c.computername

select c).skip(20).take(10);

7、分組統計:

sql:

select status,count(*) as cnt from [clients] 

group by status

order by count(*) desc

ef://func形式

var result = ctx.clients.groupby(c => c.status)

.select(s => new

) .orderbydescending(r => r.cnt);

//linq形式

var result = from c in ctx.clients

group c by c.status into r

orderby r.count() descending

select new

; 未完待續……

整理一下HIVE概念

存資料的資料庫 hive不同於其他資料庫的地方就在於建立表這個地方。hive建立表並不是有固定的表的格式,而是它僅僅記錄了匯入的資料的格式,例如行分隔符 列分隔符等,它將這些存於元資料庫裡,這樣就建立了一張表,換而言之,hive支援不同格式的資料匯入,你只要告訴hive你的資料是什麼格式的,hive...

整理一下Entity Framework的查詢

entity framework是個好東西,雖然沒有hibernate功能強大,但使用更簡便。今天整理一下常見sql如何用ef來表達,func形式和linq形式都會列出來 本人更喜歡func形式 1 簡單查詢 sql select from clients where type 1 and dele...

大一下C 整理

一 指標 指標在使用之前必須初始化 野指標的指向是無法控制的 指標變數所佔的空間大小相當於乙個整型變數的大小 隨著機器改變 32位機中佔4個位元組 二 引用 namespace 在使用變數前要確定其所在位置 影響變數的生存週期 字串是以陣列形式存放資料的 最後一位是空白結束符0 所以字陣列長度比字串...