VB.NET如何更改使用LINQ选择的行?

时间:2012-09-15 00:48:27

标签: vb.net linq datatable

我有以下代码,根据某些条件使用LINQ选择一些行。

    Dim cname
    Dim Category
    Dim cprice

    Try
        For i = 0 To mainDatatable.Rows.Count - 1
            cname = mainDatatable.Rows(i)("cname")
            Category = mainDatatable.Rows(i)("ccategory")
            cprice = mainDatatable.Rows(i)("cprice")
            Dim nameparts() As String = cname.Split(New String() {" "}, StringSplitOptions.None)
            Dim query = From products In mainDatatable.AsEnumerable()
                        Where products.Field(Of Integer)("ccategory") = Category And products.Field(Of Double)("cprice") = cprice And products.Field(Of String)("cname").Contains(nameparts(0)) And products.Field(Of String)("cname").Contains(nameparts(1))
                        Select products
            If query.Count > 1 Then
                'then i want to do some changes to those rows
            End If
        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

代码运行正常,但我需要对选定的行进行更改。我不知道该怎么做,例如我有一个名为gprice的列,我希望它为所有选定的行设置一些值,并将更改保存到mainDatatable,这样会得到你的帮助。

为清楚起见,假设query中的行数为6,那么我想为query = 1中的某些列创建所有值,然后更新所选行的值在mainDatatable

------更新

如果你没有忘记上面的代码,这就是我想要做的事情

-Ii有一个数据表它只有2列产品名称和产品价格,现在有同名但颜色不同的产品

- 我希望通过查看字符串名称对这些产品进行分组,并检查名称中包含相同字词的其他产品,只允许一个字不同,这就是颜色,

- 该组中的产品之间的价格也必须相同,这就是上面的LINQ代码所做的,它完美地完成了它

- 我的问题是我添加了一个名为groupnumber的第三列,我想为第一组中的每个产品添加1,为第二组中的每个产品添加2,依此类推。

0 个答案:

没有答案