c# - 使用 2 个 from 子句重写 linq-to-sql 查询以连接

标签 c# linq linq-to-sql

我有几个查询,其中 2 个 from 子句如下所示:

var TheResult = from a in MyDC.Table1
                from b in MyDC.Table2
                where a.SomeCol == b.SomeOtherCol
                select new MyModel() {....}

我担心这种语法会创建一个笛卡尔连接,我想用 join 语法重写它,只有一个 from 子句。我的问题是:我应该如何确定将哪个表放在 from 子句中?

谢谢。

编辑:查询生成的 t-sql 以 SELECT COALESCE(( 是好事还是坏事?

最佳答案

您可以很容易地将其重写为 JOIN:

var result = from a in MyDC.Table1
             join b in MyDC.Table2 on a.SomeCol equals b.SomeOtherCol
             select new MyModel() { SomeProp = a.SomeCol, SomeProp2 = b.SomeCol }

或者如果你想要一个左连接:

var result = from a in MyDC.Table1
             join b in MyDC.Table2 on a.SomeCol equals b.SomeOtherCol
             into myGroup
             from m in myGroup.DefaultIfEmpty()
             select new MyModel() { SomeProp = a.SomeCol, SomeProp2 = m.SomeCol }

关于c# - 使用 2 个 from 子句重写 linq-to-sql 查询以连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631973/

相关文章:

c# - 为什么我的随机数生成器用相同的数字为两个数组播种?

c# - 在 Reactive Extensions 中如何将项目缓冲到组中?

c# - 用反斜杠格式化字符串

c# - LINQ:根据属性值从 XML 中删除元素?

c# - 为什么 LET 语句的顺序在此 Entity Framework 查询中很重要?

c# - Where Not In OR Except 在 LINQ to Objects 中模拟 SQL

c# - 在 LINQ to SQL 中,如何将 LINQ 查询的一部分传递给函数

c# - Linq to SQL 奇怪的 SQL 翻译

c# - asp.net mvc发布请求+服务层-最好的方法

c# - Visual Studio C# 的默认编码颜色