以下是用于解释此问题的示例数据:
tblPrimary
1, John, 2011-01-03T11:12:00z
2, John, 2011-02-04T10:54:12z
tblDetail:
1, 1, 14, Dept01
2, 1, 12, Dept02
3, 2, 10, Dept03
4, 2, 17, Dept04
使用上面的示例表,给定一个“名称”,我需要在其中返回与 tblPrimary.Name 中的名称关联的每个详细记录。tblPrimary.Name 不是唯一的,因此会有重复,但它们确实是不同的行项目,因为它们具有不同的日期和时间。
使用 SQLMetal,生成代码以便对象处理两个表之间的关系。牢记这一点,我按如下方式构造查询:
var q = from i in dbcontext.tblDetail
where i.tblPrimary.Name == 'John' && i.PrimaryId == i.tblPrimary.PrimaryId
select i;
使用上面的示例数据,如果我在 tblPrimary 中有两个具有不同 DateAdded 的“John”,并且每个 John 在 tblDetail 中有 2 条记录,则查询返回的结果是:
John - 2011-01-03T11:12:00z
1, 1, 14, Dept01
2, 1, 12, Dept02
3, 2, 10, Dept03
4, 2, 17, Dept04
John - 2011-02-04T10:54:12z
1, 1, 14, Dept01
2, 1, 12, Dept02
3, 2, 10, Dept03
4, 2, 17, Dept04
我真正想要的结果是:
John - 2011-01-03T11:12:00z
1, 1, 14, Dept01
2, 1, 12, Dept02
John - 2011-02-04T10:54:12z
3, 2, 10, Dept03
4, 2, 17, Dept04
谁能建议我如何在不使用联接的情况下解决这个 Linq 查询?我假设两个表之间的 sqlmetal 生成关系应该已经为我处理了连接。