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

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

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

4

3 回答 3

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;

如果您的情况与问题一样简单,那么您会导致加入 linq

于 2013-04-01T08:00:41.600 回答
1

为什么不使用加入?

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
于 2013-04-01T08:06:02.977 回答
1

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

var result = dbContext.Users.Join(dbContext.Boards, 
                                  user => user.UserId, 
                                  board => board.WriteUserId,
                                  (u, b) => u.UserId);
于 2013-04-01T08:03:06.947 回答