【发布时间】:2012-09-20 16:17:00
【问题描述】:
这是 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 是无符号整数且不可为空。
【问题讨论】:
-
你对 Linq 结果做了什么?循环遍历它?
-
不要信任 LinqPad,运行查询并使用 SQL 分析器查看实际提交的内容。您获得的结果需要更多
Fbc_tickets.GroupBy(t => t.Fbt_household_id)才能提交。您是否在其他地方使用该查询(或类似查询)? -
@JoachimIsaksson:不。我没有用它做任何事情。这就是全部。我只想退出 SQL。
-
@Trisped: 嗯? SQL 探查器?我在其他地方有一些手写的 SQL,但我正在尝试编写一个相当复杂的查询,我希望 Linq 能帮助我。那,我只是想玩它并更好地学习它。
-
@Mark 我问的原因是 Linq 表达式通常不会被评估,除非你甚至对结果执行 ToList()、FirstOrDefault() 或类似操作。
标签: c# mysql linq linq-to-sql