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,因此不允许使用硬编码。运气好吗?
答案 0 :(得分:1)
在query_1之后;
var firstOwner = query_1.FirstOrDefault() ?? string.Empty;
然后在query_2中,假设m(db.tableD
)具有OwnerName
属性...
where m.OwnerName = firstOwner;
版本2 ,如果您需要来自query_1的OwnerId
:
将其更改为
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;
答案 1 :(得分:0)
答案 2 :(得分: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();