我有2张桌子。一个是用户表,其中包含userid和userSelection(另一个表的外键)都是主键,因此用户可以有多行。
第二个表包含列,其主要ID为userSelection。
我想从第二个表中检索userId具有的所有userSelection行。我也想使用linq lambda表达式。
我在sql jsut中使用它无法将其转换为在c#中使用。
Select * From column
where colID in (
select colId from users
where userID = 'someUser')
由于
答案 0 :(得分:0)
假设您正在使用实体框架,那么您真正需要的是内部联接。它看起来像这样:
from c in context.Column
join u in context.Users on c.ColId equals u.ColId
where u.UserId = 'SomeUser'
select c;
作为一个类似的lambda(语法可能缺少某些东西)(这里没有where子句,但很容易添加)
context.Column.Join( context.Users, u => u.ColId, c => c.ColId).Select
答案 1 :(得分:0)
将此代码更改为两部分
Select * From column
where colID in (
select colId from users
where userID = 'someUser')
第一部分获得colId列表:
var colIds = context.users.Where(x=>x.userID == "someUser").Select(x=>x.colId).ToList();
使用Where
和List.Contains
// IQueryable result
var result = context.column.Where(x=>colIds.Contains(x.colID));
您可以内联使用它,但我建议将其分为两个部分。