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

ruhong 2014-01-19 10:54:55
某列,比如“指标简码”列相同的行去掉,
用linq如何写?
...全文
164 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-01-20
  • 打赏
  • 举报
回复
那你把Group By写成我那样 Group q By x("指标简码") Into x
ruhong 2014-01-20
  • 打赏
  • 举报
回复
9楼的还是不对。呵呵。
ruhong 2014-01-20
  • 打赏
  • 举报
回复
这次对了,辛苦了。
threenewbee 2014-01-20
  • 打赏
  • 举报
回复
Linq操作符(Lambda表达式)和Linq表达式是等价的。 建议你先学会Lambda,再学Linq表达式。
threenewbee 2014-01-20
  • 打赏
  • 举报
回复
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()
ruhong 2014-01-20
  • 打赏
  • 举报
回复
版主大人,我要吐血了。

   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 我的思路有没有错,我的这个实现方法是不是不合适?如何过滤重复行后更新回数据库?? 救命啊。
ruhong 2014-01-19
  • 打赏
  • 举报
回复
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)("指标简码") 下面,有蓝线,提示 只能从不带参数的简单名或限定名中推断范围变量名称
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
Gunction -> Function
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
m_dst_绩效指标设置.Tables(0).AsEnumerable().GroupBy(Function(x) x("指标简码").ToString()).Select(Gunction(x) x.First())
ruhong 2014-01-19
  • 打赏
  • 举报
回复
在x下面直接就是红色感叹,未声明。
ruhong 2014-01-19
  • 打赏
  • 举报
回复
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,会有影响不。
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
不可能,除非你用的是VS2008以下,不支持Linq。 贴出完整的代码和错误来。
ruhong 2014-01-19
  • 打赏
  • 举报
回复
提示x未声明
threenewbee 2014-01-19
  • 打赏
  • 举报
回复
dataset1.Tables[0].AsEnumerable().GroupBy(x => x["指标简码"].ToString()).Select(x => x.First());

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧