Linq -如何做两个选择查询

本文关键字:选择 查询 何做两 Linq | 更新日期: 2023-09-27 18:06:53

SELECT userid FROM userTable 
WHERE userid in (select writeuserid FROM boardTable)

c# LINQ表达式,如何使用查询?

我一直使用EF4。

Linq -如何做两个选择查询

为什么不使用两个不同的LINQ查询,这样内部查询就不会在外部查询的每次迭代中执行。

var query1 = (from t in dbContext.boardTable
            select t.writeuserid).ToArray();
var query2 = from r in dbContext.userTable
             where query1.Contains(r.userid)
             select r.userid;

如果你的情况和问题中一样简单,那么你在linq

中使用join

假设在这里您使用实体框架,因此您可以使用Join来获得结果,下面是使用lambda表达式:

var result = dbContext.Users.Join(dbContext.Boards, 
                                  user => user.UserId, 
                                  board => board.WriteUserId,
                                  (u, b) => u.UserId);

为什么不使用join?

var result = (from u in dbcontext.userTable 
join u1 in dbcontext.boardTable on u.userid equals u1.writeuserid
select u.userid).FirstOrDefault();
if (result != null)
 // do anything else
else
 // user not exists