用linq,将dataset重复行去掉,如何做?

时间:2021-03-14 11:17:17
某列,比如“指标简码”列相同的行去掉,
用linq如何写?

15 个解决方案

#1


dataset1.Tables[0].AsEnumerable().GroupBy(x => x["指标简码"].ToString()).Select(x => x.First());

#2


提示x未声明

#3


不可能,除非你用的是VS2008以下,不支持Linq。

贴出完整的代码和错误来。

#4



        Using dvw_重复行 As New DataView(m_dst_绩效指标设置.Tables("指标设置"))
            m_dst_绩效指标设置.Tables(0).AsEnumerable().GroupBy(x >= x("指标简码").ToString()).Select(x >= x.First())
        End Using

前面的就不用贴了吧,
用的是vs 2010,是不是要引用什么?
我的目标framework 选的是4.0,会有影响不。

#5


在x下面直接就是红色感叹,未声明。

#6


m_dst_绩效指标设置.Tables(0).AsEnumerable().GroupBy(Function(x) x("指标简码").ToString()).Select(Gunction(x) x.First())

#7


Gunction
->
Function

#8


        Dim products As DataTable = m_dst_绩效指标设置.Tables("指标设置")
        Dim query = From q In products.AsEnumerable()
                    Group q By q.Field(Of String)("指标简码") Into abc()
                    Select abc

我想学网上这样做,
结果在q.Field(Of String)("指标简码") 下面,有蓝线,提示

只能从不带参数的简单名或限定名中推断范围变量名称

#9


 Dim products As DataTable = m_dst_绩效指标设置.Tables("指标设置")
        Dim query = From q In products.AsEnumerable()
                    Group q By q.Field(Of String)("指标简码") Into x
                    Select x.First()

#10


Linq操作符(Lambda表达式)和Linq表达式是等价的。
建议你先学会Lambda,再学Linq表达式。

#11


这次对了,辛苦了。

#12


9楼的还是不对。呵呵。

#13


那你把Group By写成我那样

Group q By x("指标简码") Into x

#14


版主大人,我要吐血了。

   Dim abc As New DataTable
        abc.TableName = "指标设置"
        abc = m_dst_绩效指标设置.Tables("指标设置").AsEnumerable().GroupBy(Function(x) x("指标简码").ToString()).Select(Function(x) x.First()).CopyToDataTable
        m_dst_绩效指标设置.Tables("指标设置").Clear()
        m_dst_绩效指标设置.Tables("指标设置").Merge(abc)

        Using sqda_保存数据 As New SqlDataAdapter("select * from 绩效管理_考核指标", m_str_服务器连接字符)
            Using sqlcmd1 As New SqlCommandBuilder(sqda_保存数据)
                sqda_保存数据.Update(m_dst_绩效指标设置.Tables("指标设置"))
            End Using
        End Using

在版主大人的提示以为要做好了,结果发现没用,要气昏了。
现在去重复是去了,但是Update的时候他居然没有update到sql server上,我要倒了。是不是在运算的过程中,他已经把记录状态标识成不是新增行了。

说说我的问题吧,先从sql server上下载指标库,然后显示在表格上,允许用户修改、增加,他输入很多数据以后,如果列“指标简码”有重复,就只留一个,然后将数据更新回sql server

我的思路有没有错,我的这个实现方法是不是不合适?如何过滤重复行后更新回数据库??

救命啊。



#15


该回复于2014-01-20 13:05:03被管理员删除

#1


dataset1.Tables[0].AsEnumerable().GroupBy(x => x["指标简码"].ToString()).Select(x => x.First());

#2


提示x未声明

#3


不可能,除非你用的是VS2008以下,不支持Linq。

贴出完整的代码和错误来。

#4



        Using dvw_重复行 As New DataView(m_dst_绩效指标设置.Tables("指标设置"))
            m_dst_绩效指标设置.Tables(0).AsEnumerable().GroupBy(x >= x("指标简码").ToString()).Select(x >= x.First())
        End Using

前面的就不用贴了吧,
用的是vs 2010,是不是要引用什么?
我的目标framework 选的是4.0,会有影响不。

#5


在x下面直接就是红色感叹,未声明。

#6


m_dst_绩效指标设置.Tables(0).AsEnumerable().GroupBy(Function(x) x("指标简码").ToString()).Select(Gunction(x) x.First())

#7


Gunction
->
Function

#8


        Dim products As DataTable = m_dst_绩效指标设置.Tables("指标设置")
        Dim query = From q In products.AsEnumerable()
                    Group q By q.Field(Of String)("指标简码") Into abc()
                    Select abc

我想学网上这样做,
结果在q.Field(Of String)("指标简码") 下面,有蓝线,提示

只能从不带参数的简单名或限定名中推断范围变量名称

#9


 Dim products As DataTable = m_dst_绩效指标设置.Tables("指标设置")
        Dim query = From q In products.AsEnumerable()
                    Group q By q.Field(Of String)("指标简码") Into x
                    Select x.First()

#10


Linq操作符(Lambda表达式)和Linq表达式是等价的。
建议你先学会Lambda,再学Linq表达式。

#11


这次对了,辛苦了。

#12


9楼的还是不对。呵呵。

#13


那你把Group By写成我那样

Group q By x("指标简码") Into x

#14


版主大人,我要吐血了。

   Dim abc As New DataTable
        abc.TableName = "指标设置"
        abc = m_dst_绩效指标设置.Tables("指标设置").AsEnumerable().GroupBy(Function(x) x("指标简码").ToString()).Select(Function(x) x.First()).CopyToDataTable
        m_dst_绩效指标设置.Tables("指标设置").Clear()
        m_dst_绩效指标设置.Tables("指标设置").Merge(abc)

        Using sqda_保存数据 As New SqlDataAdapter("select * from 绩效管理_考核指标", m_str_服务器连接字符)
            Using sqlcmd1 As New SqlCommandBuilder(sqda_保存数据)
                sqda_保存数据.Update(m_dst_绩效指标设置.Tables("指标设置"))
            End Using
        End Using

在版主大人的提示以为要做好了,结果发现没用,要气昏了。
现在去重复是去了,但是Update的时候他居然没有update到sql server上,我要倒了。是不是在运算的过程中,他已经把记录状态标识成不是新增行了。

说说我的问题吧,先从sql server上下载指标库,然后显示在表格上,允许用户修改、增加,他输入很多数据以后,如果列“指标简码”有重复,就只留一个,然后将数据更新回sql server

我的思路有没有错,我的这个实现方法是不是不合适?如何过滤重复行后更新回数据库??

救命啊。



#15


该回复于2014-01-20 13:05:03被管理员删除