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 所以字陣列長度比字串...