Linq - 如何做两个选择查询?

时间:2013-04-01 07:58:22

标签: c# linq

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

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

我一直在使用EF4。 userTable,boardTable连接到DbContext。

3 个答案:

答案 0 :(得分:4)

为什么没有两个不同的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;

如果你的情况和问题一样简单,那么你会导致join in linq

答案 1 :(得分:1)

假设你在这里使用Entity FrameWork,所以你可以使用Join来获得结果,下面是使用lambda表达式:

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

答案 2 :(得分:1)

为什么不使用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