LINQ怎样在where子句中用子查询?

qha_cn 2014-11-05 02:14:49
int userID=3;

select * from table1
where userID in (select userID from table2 where table2.table1ID = table1.ID)

上面的SQL中的where使用了子查询,在LINQ中怎样使用?
...全文
6541 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehong123 2017-04-20
  • 打赏
  • 举报
回复
//1 var ss = from r in db.Am_recProScheme join w in db.Am_Test_Result on r.rpId equals w.rsId orderby r.rpId descending select r; //2 var ss1 = db.Am_recProScheme.Join(db.Am_Test_Result, p => p.rpId, r => r.rsId, (p, r) => p).OrderByDescending(p => p.rpId).ToList();
  • 打赏
  • 举报
回复
sql写法+lamb写法,妥妥的…… sql写法加sql写法其实也是可以的
romanchaos 2015-04-27
  • 打赏
  • 举报
回复
int userID=3; select * from table1 where userID in (select userID from table2 where table2.table1ID = table1.ID) var query = from t1 in table1 join t2 in table2 on new { tableId = t1.ID,t1.userID} equals new {tableId = t2.table1ID,t2.userId} select t1; 帮你改成表连,问题是你这句sql语句本身就有问题吧?
ppp_dahaihao 2015-04-02
  • 打赏
  • 举报
回复
在HAVING子句中使用子查询过滤数据 // 查询数据库信息 // <returns>方法返回DataTable对象</returns> private DataTable GetStudent() { string P_Str_ConnectionStr = string.Format(//创建数据库连接字符串 @"server=WIN-GI7E47AND9R\LS;database=db_TomeTwo;uid=sa;pwd="); string P_Str_SqlStr = string.Format(//创建SQL查询字符串 @"SELECT 所在学院,学生姓名,年龄,(SELECT AVG(年龄) FROM tb_Student) AS 平均年龄 FROM tb_Student GROUP BY 所在学院,学生姓名,年龄 HAVING 年龄>(SELECT AVG(年龄) FROM tb_Student)");//codego.net/ SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter(//创建数据适配器 P_Str_SqlStr, P_Str_ConnectionStr); DataTable P_dt = new DataTable();//创建数据表 P_SqlDataAdapter.Fill(P_dt);//填充数据表 return P_dt;//返回数据表 }
  • 打赏
  • 举报
回复
引用 楼主 qha_cn 的回复:
int userID=3; select * from table1 where userID in (select userID from table2 where table2.table1ID = table1.ID)
如果你在学习 sql 语言,那么你的老师一定要求你把这种查询要写为 inner join 的。
  • 打赏
  • 举报
回复
引用 5 楼 wjq 的回复:
BTW,你这句sql的逻辑有问题吧
同意。 实际上如果 sql 都不能写成“连接运算”的人,很可能逻辑上经常绕在问题里出不来。
wjq 2015-02-17
  • 打赏
  • 举报
回复
比较简单,比较容易阅读的方法: var subwhere=子查询 var query= from t in table1 where subwhere.Any(f=>f==t.userID) select t; BTW,你这句sql的逻辑有问题吧
zhang1struts1yun 2014-11-18
  • 打赏
  • 举报
回复
lambda表达式
Aries_0219 2014-11-14
  • 打赏
  • 举报
回复
在上一个Iquerable 对象下继续做一个查询,或者用lambda
q107770540 2014-11-05
  • 打赏
  • 举报
回复
I recommend you use this code:

var query= from t1 in db.table1
           join t2 in db.table2
           on t1.ID equals t2.table1ID 
           where t2.userID == userID
           select t1;
q107770540 2014-11-05
  • 打赏
  • 举报
回复
var query= from t1 in db.table1
where db.table2.Where(t2=>t2.table1ID==t1.ID).Select(t2=>t2.userID)
.Contains(userID)
select t1;

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧