0

我想在 Linq To SQL 中重写这个简单的 MS SQL 查询:

SELECT * FROM Table1 T1
    LEFT JOIN Table2 T2 ON T1.ID = T2.Table1ID OR T1.FirstName = T2.FirstName

如何在 Linq To SQL 中重写它?

4

3 回答 3

3

试试这个,虽然我不知道 Linq-to-SQL 的翻译效果如何:

from t1 in ctx.Table1
from t2 in ctx.Table2
              .Where(t => t1.ID == t.Table1ID ||
                          t1.FirstName == t.Firstname)
              .DefaultIfEmpty()
select new {t1, t2}
于 2013-07-15T16:08:31.477 回答
0

我不相信这可以做到,因为我认为你不能做加入的 OR 部分。你加入 L2S 的方式是(大致)

join .. on
new {
    T1.ID,
    T1.FirstName
} equals new {
    T2.Table1ID,
    T2.FirstName
}

但这两者都匹配。

我能想到的唯一一件事就是在那里做某种子查询。但这可能不是您想要的。Sklivvz 的建议可能是最好的。

于 2013-07-15T15:58:16.963 回答
0

这是一个内部连接。

from t1 in ctx.Table1
from t2 in ctx.Table2
where t1.ID == t2.Table1ID ||
      t1.FirstName == t2.Firstname
select t1

DefaultIfEmpty()根据MSDN ,要获得左连接,您可以使用它。

from t1 in ctx.Table1
from t2 in ctx.Table2.DefaultIfEmpty()
where t1.ID == t2.Table1ID ||
      t1.FirstName == t2.Firstname
select t1
于 2013-07-15T15:59:14.067 回答