Я выполняю «тот же» запрос, используя 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
Это второй "СЧЕТ (*)", который пропускает вещи.
Спасибо.