这个查询效果很好:
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();
我的“操作”字段得到了一个新类型。现在我也想检索我的“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();
例如:-)
关于c# - 从多个表创建 LINQ 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433/