c# – 使用lambda表达式的多个Left Outer Join
发布时间:2020-12-15 05:41:31 所属栏目:百科 来源:网络整理
导读:我有一个SQL查询与这样的Lambda表达式,通常有比这个例子更多的连接. select Table2.a,Table2.b,Table2.c,Table2.d from Table1 LEFT OUTER JOIN Table2 ON Table2.a = Table1.a and Table2.b = Table1.b and Table2.c = Table1.c LEFT OUTER JOIN Table3 ON
我有一个SQL查询与这样的Lambda表达式,通常有比这个例子更多的连接.
select Table2.a,Table2.b,Table2.c,Table2.d from Table1 LEFT OUTER JOIN Table2 ON Table2.a = Table1.a and Table2.b = Table1.b and Table2.c = Table1.c LEFT OUTER JOIN Table3 ON Table3.b = Table1.b AND Table3.c = Table1.c AND Table3.d = Table1.d where ( Table1.a = ValueA ) order by Table3.f 我正在使用Join()Lambda Expression执行此操作,但我在SQL Server分析器中看到,这会生成一个INNER JOIN,我需要一个LEFT OUTER JOIN. 这是我用Join()做的 var RS = DBContext.Table1.Join(DBContext.Table2,Table1 => new {Table1.a,Table1.b,Table1.c},Table2 => new {Table1.a,(Table1,Table2) => new {Table1}) .Join(DBContext.Table3,LastJoin => new {LastJoin.Table1.b,LastJoin.Table1.c,LastJoin.Table1.d},Table3 => new {Table3.b,Table3.c,Table3.d},(LastJoin,Table3) => new {LastJoin.Table1,Table3}) .Where (LastTable => LastTable.Table1.a == ValueA) .OrderBy(LastTable => LastTable.Table3.f) .Select (LastTable => new {LastTable.Table1,LastTable.Table3}); 我一直在读它可以使用DefaultIfEmpty()或GroupJoin()完成,但我没有找到任何具有多个LEFT OUTER JOIN的复杂示例. 解决方法
为什么不尝试使用linq查询,与lambda表达式相比,编写和理解它们也容易得多.我有这样的实现,如:
var products = from p in this.Products from cat in this.ProductCategoryProducts .Where(c => c.ProductID == p.ProductID).DefaultIfEmpty() from pc in this.ProductCategories .Where(pc => ac.ProductCategoryID == cat.ProductCategoryID).DefaultIfEmpty() where p.ProductID == productID select new { ProductID = p.ProductID,Heading = p.Heading,Category = pc.ProductCategory }; return products ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |