0

这是 C#/Linq:

Fbc_tickets.GroupBy(t => t.Fbt_household_id)

LinqPad 告诉我这正在被翻译成(MySQL):

SELECT t0.fbt_household_id
FROM fbc_ticket AS t0
GROUP BY t0.fbt_household_id

SELECT t0.fbc_ticket_id, t0.fbt_client_id, ...
FROM fbc_ticket AS t0
WHERE ((t0.fbt_household_id IS NULL AND @n0 IS NULL) OR (t0.fbt_household_id = @n0))
-- n0 = [1]

SELECT t0.fbc_ticket_id, t0.fbt_client_id, ...
FROM fbc_ticket AS t0
WHERE ((t0.fbt_household_id IS NULL AND @n0 IS NULL) OR (t0.fbt_household_id = @n0))
-- n0 = [2]

...

为什么它会生成所有这些查询?我期待更类似于的东西

SELECT * FROM fbc_ticket GROUP BY fbt_household_id

就是这样……

fbt_household_id是无符号整数且不可为空。

4

1 回答 1

2

我一直在 linq-to-sql 中看到这一点。首先是获取分组键的查询,然后是每个键的查询以填充组。我不知道为什么要以这种方式实现它,但是恐怕您对此无能为力。实体框架在这个特定领域(不是在其他领域)要聪明得多。

当我连接到现有的 linq-to-sql 上下文时,Linqpad 也会这样做(并且不要让它动态创建上下文),所以我认为它与 Linqpad 没有任何关系。

于 2012-09-28T21:11:13.067 回答