Я выполняю «тот же» запрос, используя LINQ to SQL и LINQPad, однако набор результатов получается немного другим.
Код
var conn = new SqliteConnection (
"DbLinqProvider=Sqlite;" +
"Data Source=/home/larsenma/database.golden"
);
Models.Main db = new Models.Main (conn);
var runSum =
from rr in db.Runrecords
group rr by rr.RunID into rg
select new
{
LaneCount = rg.Count(),
}
LINQPad правильно вычисляет «LaneCount», в то время как с LINQ to SQL я получаю 1 с для каждой записи.
С LINQ to SQL я использовал sqlmetal для создания своего сопоставления для DBLinq, а с LINQPad используется драйвер IQ. Моя база данных SQLite.
Я новичок в этом LINQ, есть идеи, где я ошибаюсь?
РЕДАКТИРОВАНИЕ
Я упростил свой запрос до минималистского воспроизводимого экземпляра. Когда я отлаживаю сгенерированный SQL, я получаю
SELECT (SELECT COUNT(*))
FROM runrecords
GROUP BY RunID
Это второй «COUNT (*)», который пропускает вещи.
Спасибо.