如何从IQueryable中检索不同的对象类型

时间:2013-03-07 11:30:49

标签: c# linq entity-framework ado.net linq-to-entities

我首先使用Entity Framework 5代码。我有以下查询返回2个不同的对象:

var query = (from s in DatabaseContext.Servers
             join c in DatabaseContext.CommandExecutionServers on s.Domain equals c.Domain
             where s.Id == serverId && c.Active == active
             select new { s, c });

s是Server class,c是CEServer class

如何从查询中检索s和c对象,因为我需要使用它们。我需要这样的东西:

Server server = s;  // first check for nulls and
server.CEServer = c;  // check for nulls as well

2 个答案:

答案 0 :(得分:1)

由于您的查询返回 anonymous 类的一系列对象,因此您可以枚举查询,并从每个返回的行中访问sc,如下所示:< / p>

foreach (var row in query) {
    Server s = row.s;
    // Check the server...
    CEServer c = row.c;
    // Use CEServer...
}

答案 1 :(得分:1)

如果您确定只能获得一对,则可以使用:

Server server = query.Single().s;  // first check for nulls and
server.CEServer = query.Single().c;

如果不是,您将获得例外