日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
對linq多表查詢的淺析

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

成都創(chuàng)新互聯(lián)專注于碾子山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供碾子山營銷型網(wǎng)站建設(shè),碾子山網(wǎng)站制作、碾子山網(wǎng)頁設(shè)計、碾子山網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造碾子山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供碾子山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

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

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

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

linq多表查詢之直接寫表達式

 
 
 
 
  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選項

 
 
 
 
  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ù),但是因為指定了LoadOption選項,所以也是一次性從數(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

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

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

如果要我評分的話,我會這樣評

linq多表查詢評分(1)

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

linq多表查詢評分(2)

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

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


網(wǎng)頁標(biāo)題:對linq多表查詢的淺析
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/cdeicdg.html