LINQ加入条款
发布时间:2020-12-12 16:20:59 所属栏目:MsSql教程 来源:网络整理
导读:我正在努力使用一个连接/ where子句,什么是一个相当简单的sql select语句. 我正在尝试从tb1中获取产品信息列表,其中位于tbl2之后的位置,但是必须通过三个不同的列连接. 所以SQL会看起来像这样: SELECT tb1.*FROM tb2 INNER JOIN tb1 ON tb2.Col1 = tb1. Col1
我正在努力使用一个连接/ where子句,什么是一个相当简单的sql select语句.
我正在尝试从tb1中获取产品信息列表,其中位于tbl2之后的位置,但是必须通过三个不同的列连接. 所以SQL会看起来像这样: SELECT tb1.* FROM tb2 INNER JOIN tb1 ON tb2.Col1 = tb1. Col1 AND tb2.Col2 = tb1. Col2 AND tb2.Col3 = tb1.Col3 WHERE (tb2.Col1 = col1) AND (tb2.Col2 = col2) AND (tb2.Col4 = string) ColX是将要传递的字符串作为参数的主要的where子句;所有其他列都在上下文中. 如何使用where子句实现多个连接? 并向正确的方向推进,非常感谢. 解决方法要在LINQ中加入多个字段,您必须创建一个新的匿名类型,其中包含要比较的列,然后在连接中使用该匿名类型:var results = from t1 in context.tb1 join t2 in context.tb2 on new { t1.Col1,t1.Col2,t1.Col3 } equals new { t2.Col1,t2.Col2,t2.Col3 } where t2.Col1 == col1 && t2.Col2 == col2 && t2.Col4 == someString select t1; 这里是等效的Lambda语法: var results = context.tb1.Join( context.tb2,t1 => new { t1.Col1,t1.Col3 },t2 => new { t2.Col1,t2.Col3 },(t1,t2) => new { t1,t2 }) .Where(o => o.t2.Col1 == col1 && o.t2.Col2 == col2 && o.t2.Col4 == someString) .Select(o => o.t1); 正如你所看到的,在连接的情况下,查询语法通常会产生一个更容易阅读的语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |