Linq to sql LINQtoSQL错误:类型“System.String”不支持序列运算符

Linq to sql LINQtoSQL错误:类型“System.String”不支持序列运算符,linq-to-sql,Linq To Sql,由于某种原因,我的代码无法工作 from tan in TANS where tan.ID.ToString().Count() != 1 select tan 我想选择表中重复的所有ID,因此我使用计数!=我得到了这个错误 NotSupportedException:类型“System.String”不支持序列运算符 请帮助?tan.ID.ToString是一个字符串,不是集合,因此无法应用计数 我相信你想要的是这样的:这个语法是错误的,但是很接近 from tan

由于某种原因,我的代码无法工作

    from tan in TANS
    where tan.ID.ToString().Count() != 1
    select tan
我想选择表中重复的所有ID,因此我使用计数!=我得到了这个错误

NotSupportedException:类型“System.String”不支持序列运算符

请帮助?

tan.ID.ToString是一个字符串,不是集合,因此无法应用计数

我相信你想要的是这样的:这个语法是错误的,但是很接近

from tan in TANS
group tan by tan.ID into dups
where dups.Count() > 1
select dups.Key;

5年减去5天后更新:用谷歌搜索一个问题并找到你写的答案有点奇怪。。这个问题的核心是LINQ语句试图构建SQL语句,而数据库不知道如何对字符串应用Count。但是,如果对内存中的集合使用LINQ,那么它会将字符串视为IEnumerable,计数也会正常工作。

James的答案接近我认为您想要的,如果您只希望ID本身的值符合他的要求。如果您想要指定ID的对象,请尝试此操作

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很重要,因为它可以将iGroup中的对象列表展平