成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對linq多表查詢的淺析

開發(fā) 后端
有時(shí)候我們需要對多張數(shù)據(jù)表進(jìn)linq多表查詢。目前就我所知的操作方法有三種:1.直接寫表達(dá)式;2.使用LoadOption選項(xiàng);3.使用Join語句。那么,這三種語句用哪一種好呢?讓我們來做一個(gè)小小的研究。

linq多表查詢的實(shí)用性如何呢,本文就要來揭曉了,請大家仔細(xì)閱讀。

1:1關(guān)系的多表操作

表結(jié)構(gòu)
表結(jié)構(gòu)如上

首先是測試取全記錄的情況(也就是取所有字段)

linq多表查詢之直接寫表達(dá)式

  1. var user = context.Users.Where(p => p.UserID == 
  2. 10300).Select(p => new {p, p.UserData});  
  3. SELECT [t0].[UserID], [t0].[Email], [t0].[NickName],
  4.  [t2].[test], [t2].[UserID] AS [UserID2], [t2].[MyInfo],
  5.  [t2].[MyFriends] FROM [dbo].[Users] AS [t0] 
  6. LEFT OUTER JOIN (SELECT 1 AS [test], [t1].[UserID], [t1].[MyInfo], 
  7. [t1].[MyFriends] FROM [dbo].[UserData] AS 
  8. [t1]) AS [t2] ON [t2].[UserID] = 
  9. [t0].[UserID]WHERE [t0].[UserID] = 10300 

linq多表查詢之使用LoadOption選項(xiàng)

  1. var option = new DataLoadOptions();  
  2. option.LoadWith(p => p.UserData);  
  3. context.LoadOptions = option;  
  4. var user = context.Users.Where(p => p.UserID == 10300).Single();  
  5. var userdata = user.UserData;  

雖然看上去取了2次數(shù)據(jù),但是因?yàn)橹付薒oadOption選項(xiàng),所以也是一次性從數(shù)據(jù)庫取出來的。

  1. SELECT [t0].[UserID], [t0].[Email], [t0].[NickName], [t2].[test],
  2.  [t2].[UserID] AS [UserID2], [t2].[MyInfo],
  3.  [t2].[MyFriends] FROM [dbo].[Users] AS [t0]  
  4. LEFT OUTER JOIN (SELECT 1 AS [test], [t1].[UserID], 
  5. [t1].[MyInfo], [t1].[MyFriends] FROM [dbo].[UserData] AS
  6.  [t1]) AS [t2] ON [t2].[UserID] = [t0].[UserID]  
  7. WHERE [t0].[UserID] = 10300 

linq多表查詢之使用Join語句

  1. var user = context.Users.Where(p => 
  2. p.UserID == 10300).Join(context.UserDatas, p => p.UserID,
  3.  o => o.UserID, (o, p) => new { o, p });  
  4. SELECT [t0].[UserID], [t0].[Email], [t0].[NickName],
  5.  [t1].[UserID] AS [UserID2], [t1].[MyInfo],
  6.  [t1].[MyFriends] FROM [dbo].[Users] AS [t0] 
  7. INNER JOIN [dbo].[UserData] AS [t1] ON [t0].[UserID] = 
  8. [t1].[UserID] WHERE [t0].[UserID] = 10300 

但是要注意的一點(diǎn)是,如果用了.Select(p => new {p, p.UserData}) 這種代碼,你在使用實(shí)體的時(shí)候會(huì)稍微麻煩一點(diǎn),要采用user.p.UserID這種形式,非常不爽。

可以這樣改進(jìn)一下,寫成.Select(p => new {User = p, p.UserData})這種形式,這樣的話可以使用user.User.UserID來訪問。如果想直接用user.UserID來訪問的話,就必須在new的時(shí)候?yàn)槊恳粋€(gè)屬性賦名稱,如果數(shù)據(jù)表字段很多的話,那我只能恭喜你中獎(jiǎng)啦。

如果要我評(píng)分的話,我會(huì)這樣評(píng)

linq多表查詢評(píng)分(1)
linq多表查詢評(píng)分(1)

如果只是要取部分字段的話,我們必須在Select的時(shí)候指定要取的字段,這樣的話,在返回實(shí)例的易用性上,三種方式將是一樣的效果。

linq多表查詢評(píng)分(2)
linq多表查詢評(píng)分(2)

至于具體怎么用就看各位喜好了…………..當(dāng)然,別忘了我們還有宇宙超級(jí)無敵的“視圖”可以使用...........

以上就是對linq多表查詢的簡單介紹。

【編輯推薦】

  1. 深度講解LINQ動(dòng)態(tài)查詢
  2. 實(shí)例講解Linq動(dòng)態(tài)條件查詢
  3. 淺析linq動(dòng)態(tài)條件查詢
  4. LINQ to SQL查詢分析
  5. System.Data.Linq程序集概述
責(zé)任編輯:阡陌 來源: 博客園
相關(guān)推薦

2009-09-17 18:05:15

linq to sql

2009-09-17 17:34:23

linq to sql

2009-09-14 19:14:51

LINQ動(dòng)態(tài)查詢

2009-09-10 14:47:53

Linq .NET查詢

2009-09-15 09:19:22

linq動(dòng)態(tài)條件

2009-09-14 18:23:59

LINQ嵌套查詢

2009-09-22 15:26:30

Hibernate多表

2009-09-15 17:16:58

LINQ查詢操作符

2009-09-14 17:10:57

LINQ模糊查詢

2009-09-14 18:19:49

LINQ模糊查詢

2009-09-08 16:36:10

LINQ查詢基于泛型類

2010-08-24 09:47:05

LINQ to SQL

2009-09-13 21:52:16

LINQ字符串

2009-09-16 17:29:10

Linq查詢二維數(shù)組

2009-09-15 14:30:11

Linq連接

2009-09-14 18:57:19

LINQ查詢

2009-09-17 09:09:50

Lambda表達(dá)式Linq查詢

2009-09-17 13:30:32

LINQ to XML

2009-09-10 18:02:23

LINQ to SQL

2009-09-14 16:46:15

LINQ to XML
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费黄色录像片 | 国产一区二区三区四区 | 国产免费一区二区 | 亚洲精品一区中文字幕乱码 | 久久r久久 | 日韩国产在线观看 | 一区二区在线 | 精品福利av导航 | 欧美性大战久久久久久久蜜臀 | 成年人在线视频 | 一级特黄色毛片 | 日韩精品视频网 | 青青久久 | 日韩小视频在线 | 亚洲一区二区三区在线视频 | 亚洲精品久久久一区二区三区 | 亚洲精品国产电影 | 毛片高清| 国产精品成人一区二区 | 国产精品一区二区三区在线 | 一区中文字幕 | 亚洲精品黄 | av免费网址 | 亚洲第一在线视频 | 久久精品小视频 | 午夜久久久久久久久久一区二区 | 99综合| 日韩精品在线一区 | 亚洲黄色网址视频 | 久久久久久综合 | 午夜精品久久久 | 天天操操| 亚洲欧美中文日韩在线 | 欧美精品一区二区三区在线 | 国产99久久精品一区二区永久免费 | 欧美性生交大片免费 | 欧美v免费 | 视频一区二区三区在线观看 | 在线免费看毛片 | 天天射网站| 91视频网 |