Zasadniczo masz 2 miejsca na zduplikowanie wierszy, jeśli Twój ASP jest poprawny:
1) Błędny kod SQL (prawdopodobnie musisz użyć operatora DISTINCT)
2) Kod C# jest nieprawidłowy (prawdopodobnie musisz sprawdzić źródło danych)
Sprawdź swoje pls SQL. I udostępnij nam swój kod C#.
Użyj tego
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