从多个表中创建 LINQ 选择

2024-04-18

这个查询效果很好:

var pageObject = (from op in db.ObjectPermissions
                  join pg in db.Pages on op.ObjectPermissionName equals page.PageName
                  where pg.PageID == page.PageID
                  select op)
                 .SingleOrDefault();

我得到了一个带有“op”字段的新类型。现在我也想检索我的“pg”字段,但是

select op, pg).SingleOrDefault();

不起作用。

如何从两个表中选择所有内容,以便它们出现在我的新 pageObject 类型中?


您可以为此使用匿名类型,即:

var pageObject = (from op in db.ObjectPermissions
                  join pg in db.Pages on op.ObjectPermissionName equals page.PageName
                  where pg.PageID == page.PageID
                  select new { pg, op }).SingleOrDefault();

这将使 pageObject 成为匿名类型的 IEnumerable,因此据我所知,您将无法将其传递给其他方法,但是如果您只是获取数据以在当前所在的方法中使用,那就完全没问题了。您还可以在匿名类型中命名属性,即:-

var pageObject = (from op in db.ObjectPermissions
                  join pg in db.Pages on op.ObjectPermissionName equals page.PageName
                  where pg.PageID == page.PageID
                  select new
                  {
                      PermissionName = pg, 
                      ObjectPermission = op
                  }).SingleOrDefault();

这将使您能够说:-

if (pageObject.PermissionName.FooBar == "golden goose") Application.Exit();

例如 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从多个表中创建 LINQ 选择 的相关文章

随机推荐