linq多表查询的实用性如何呢,本文就要来揭晓了,请大家仔细阅读。
成都创新互联专注于碾子山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供碾子山营销型网站建设,碾子山网站制作、碾子山网页设计、碾子山网站官网定制、小程序开发服务,打造碾子山网络公司原创品牌,更为您提供碾子山网站排名全网营销落地服务。
1:1关系的多表操作
表结构如上
首先是测试取全记录的情况(也就是取所有字段)
linq多表查询之直接写表达式
- var user = context.Users.Where(p => p.UserID ==
- 10300).Select(p => new {p, p.UserData});
- SELECT [t0].[UserID], [t0].[Email], [t0].[NickName],
- [t2].[test], [t2].[UserID] AS [UserID2], [t2].[MyInfo],
- [t2].[MyFriends] FROM [dbo].[Users] AS [t0]
- LEFT OUTER JOIN (SELECT 1 AS [test], [t1].[UserID], [t1].[MyInfo],
- [t1].[MyFriends] FROM [dbo].[UserData] AS
- [t1]) AS [t2] ON [t2].[UserID] =
- [t0].[UserID]WHERE [t0].[UserID] = 10300
linq多表查询之使用LoadOption选项
- var option = new DataLoadOptions();
- option.LoadWith (p => p.UserData);
- context.LoadOptions = option;
- var user = context.Users.Where(p => p.UserID == 10300).Single();
- var userdata = user.UserData;
虽然看上去取了2次数据,但是因为指定了LoadOption选项,所以也是一次性从数据库取出来的。
- SELECT [t0].[UserID], [t0].[Email], [t0].[NickName], [t2].[test],
- [t2].[UserID] AS [UserID2], [t2].[MyInfo],
- [t2].[MyFriends] FROM [dbo].[Users] AS [t0]
- LEFT OUTER JOIN (SELECT 1 AS [test], [t1].[UserID],
- [t1].[MyInfo], [t1].[MyFriends] FROM [dbo].[UserData] AS
- [t1]) AS [t2] ON [t2].[UserID] = [t0].[UserID]
- WHERE [t0].[UserID] = 10300
linq多表查询之使用Join语句
- var user = context.Users.Where(p =>
- p.UserID == 10300).Join(context.UserDatas, p => p.UserID,
- o => o.UserID, (o, p) => new { o, p });
- SELECT [t0].[UserID], [t0].[Email], [t0].[NickName],
- [t1].[UserID] AS [UserID2], [t1].[MyInfo],
- [t1].[MyFriends] FROM [dbo].[Users] AS [t0]
- INNER JOIN [dbo].[UserData] AS [t1] ON [t0].[UserID] =
- [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的时候为每一个属性赋名称,如果数据表字段很多的话,那我只能恭喜你中奖啦。
如果要我评分的话,我会这样评
linq多表查询评分(1)
如果只是要取部分字段的话,我们必须在Select的时候指定要取的字段,这样的话,在返回实例的易用性上,三种方式将是一样的效果。
linq多表查询评分(2)
至于具体怎么用就看各位喜好了…………..当然,别忘了我们还有宇宙超级无敌的“视图”可以使用...........
以上就是对linq多表查询的简单介绍。
当前文章:对linq多表查询的浅析
路径分享:http://www.shufengxianlan.com/qtweb/news32/299432.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联