Básicamente, tiene 2 lugares para duplicar filas si su ASP es correcto:
1) SQL es incorrecto (probablemente deba usar el operador DISTINCT)
2) El código C# es incorrecto (probablemente deba verificar su fuente de datos)
Compruebe su SQL por favor. Y comparte tu código C# con nosotros.
Usa esto
SELECT distinct category_name, thread_category_id, threadCount
FROM
( SELECT categories.category_name, threads.thread_category_id, COUNT(*)
AS 'threadCount' FROM threads
INNER JOIN categories ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, threads.thread_category_id ) A