Я заметил, что у вас есть опечатка с on_message
.
Но я бы также предложил вам использовать модуль pyjokes для этого очень серьезного приложения.
import pyjokes
print(pyjokes.get_joke())
tan.ID.ToString()
строка, не набор, таким образом, Вы не можете применить количество ().
Я полагаю, что Вы хотите что-то как: (Этот синтаксис является неправильным, но близко),
from tan in TANS
group tan by tan.ID into dups
where dups.Count() > 1
select dups.Key;
Обновление (после 5 лет минус 5 дней): (Это немного странно к Google проблема, и найдите ответ, который ВЫ записали..) В ядре этой проблемы, оператор LINQ пытается создать SQL-оператор, и база данных не знает, как применить количество () к строке. Однако при использовании LINQ против набора в памяти затем это рассматривало бы строку как IEnumerable, и количество () будет работать просто великолепно.
Ответ заторов близко к тому, что я думаю, что Вы желаете, если Вы просто хотите значение самого идентификатора, идут с его. Если Вы хотите объект, идентификатор присвоен для попытки этого.
var dupes = (from tan in TANS
group tan by tan.ID.ToString() into duplicates
where duplicates.Count() > 1
select duplicates.Select(d => d)).SelectMany(d => d);
Не самый чистый способ сделать это в LINQ я уверен. Если я придумаю более чистый способ сделать это, то я отредактирую его здесь. Тот SelectMany важен, поскольку он сглаживает список объектов от IGrouping.