需要linq查询帮助

问题描述 投票:0回答:1

我在 vb.net 2022 中使用此代码来更新数据库中的数据,但它一次只更新一列。

如何让它及时更新所有列?我对 linq 很陌生。

Dim x = (From table In _context.tb_ExpLists Where
         table.Expl_id = ComboBox1.SelectedValue.ToString).ToList(0)
         x.exp_name = TextBox8.Text
         x.exp_desc = TextBox7.Text
         x.exp_limit = TextBox4.Text
         x.exp_type = TextBox3.Text

         _context.SubmitChanges()

在模块中我设置了

Public _context As New DataClasses1DataContext()

我发现很多帖子都在谈论 foreach 循环,但对我来说都不起作用。

vb.net entity-framework linq
1个回答
0
投票

这个:

.ToList(0)

实际上相当于这个:

.ToList().Item(0)

因此您正在创建列表,然后从该列表中获取第一项。如果您不想只影响第一项,请不要只获取第一项。获取整个列表并将其分配给一个变量,然后使用该变量循环整个列表:

Dim list = (From table In _context.tb_ExpLists
            Where table.Expl_id = ComboBox1.SelectedValue.ToString()).ToList()

For Each item In list
    item.exp_name = TextBox8.Text
    item.exp_desc = TextBox7.Text
    item.exp_limit = TextBox4.Text
    item.exp_type = TextBox3.Text
Next

事实上,在这种情况下,您甚至不需要

ToList
调用,除非您还打算将该列表用于其他用途。您可以直接枚举查询结果:

Dim list = From table In _context.tb_ExpLists
           Where table.Expl_id = ComboBox1.SelectedValue.ToString()

For Each item In list
    item.exp_name = TextBox8.Text
    item.exp_desc = TextBox7.Text
    item.exp_limit = TextBox4.Text
    item.exp_type = TextBox3.Text
Next
© www.soinside.com 2019 - 2024. All rights reserved.