当前位置:  开发笔记 > 数据库 > 正文

LINQtoSQL错误:类型'System.String'不支持序列运算符

如何解决《LINQtoSQL错误:类型'System.String'不支持序列运算符》经验,为你挑选了2个好方法。

出于某种原因,我的代码将无效.

    from tan in TANS
    where tan.ID.ToString().Count() != 1
    select tan

我想选择表中重复的所有ID,所以我使用count!= 1,我得到这个错误.

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

请帮忙?



1> James Curran..:

tan.ID.ToString() 是一个字符串,而不是一个集合,所以你不能应用Count().

我相信你想要的东西:(这种语法错了,但很接近)

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,而Count()可以正常工作.



2> David..:

詹姆斯的回答接近于我认为你想要的,如果你只是想让身份证的价值与他一致.如果您希望分配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非常重要,因为它会使IGrouping中的对象列表变平.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有