1
var query_1 = from m in db.tableA
                        join n in db.tableB
                        on m.OwnerID equals n.OwnerID into tabA
                        from a in tabA
                        join o in db.tableC
                        on m.OwnerID equals o.OwnerID 
                        where m.UserID == userSessionID
                        && m.ActiveStatus == 1
                        select new { OwnerName = m.OwnerName };

var query_2 = from m in db.tableD
                        join n in db.tableE
                        on m.OwnerID equals n.OwnerID into tabX
                        from a in tabX
                        join o in db.tableF
                        on m.OwnerID equals o.OwnerID 
                        where {?????????????}
                        select new { ...... };

从上面的代码中,query_1 将返回一个从数据库中检索到的元素列表。我需要的是我只想要 query_1 中的第一项,并在我的 query_2 中使用这个元素的列作为条件。这一切都是在我使用 foreach 循环通过 query_1 来获取所有元素但这次我只想要第一项。请注意,query_1 列表可能会返回 null,因此不允许使用硬编码。运气好的话?

4

3 回答 3

1

在查询_1之后;

var firstOwner = query_1.FirstOrDefault() ?? string.Empty;

然后在 query_2 中,假设 m ( db.tableD) 有一个OwnerName属性...

where m.OwnerName = firstOwner;

版本 2,如果您需要OwnerId来自 query_1 :

将其更改为

select new { OwnerName = m.OwnerName, OwnerId = m.OwnerId };

var firstOwner = query_1.FirstOrDefault();
var firstOwnerId = firstOwner == null ? -1 : firstOwner.OwnerId;

并在 query_2

where m.OwnerId = firstOwnerId;
于 2013-08-29T06:36:02.623 回答
0

尝试将其放在列表中,然后将最高记录作为 .First()?

        List<object> first = new List<object>();
        first = query_1.toList();

然后在你的 query_2 上放这个:

        where m.OwnerId = first.First();

编辑:

或者简单地将其放在您的 query_2 上:

        where m.OwnerId = query_1.First();
于 2013-08-29T06:57:03.453 回答
0

您可以使用 .FirstOrDefault()从第一个查询中获取第一个元素,然后您可以根据需要使用它的值。

您可能还想看看这个

于 2013-08-29T06:40:07.640 回答