将C#Linq翻译成VB

将C#Linq翻译成VB,c#,vb.net,linq,C#,Vb.net,Linq,我需要一些帮助来将这段C#代码转换成VB。我是Linq的新手,在语法方面遇到了麻烦 var rows = GridView1.Rows.Cast<GridViewRow>().Where(a => a != row).ToList(); 谢谢 Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a IsNot row).ToList() 另一方面,应该是 GridView1.DataSourc

我需要一些帮助来将这段C#代码转换成VB。我是Linq的新手,在语法方面遇到了麻烦

var rows = GridView1.Rows.Cast<GridViewRow>().Where(a => a != row).ToList();
谢谢

Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a IsNot row).ToList()
另一方面,应该是

GridView1.DataSource = rows.Select(Function(a) New With {_         
              .FirstName = CType(a.FindControl("txtFirstName"), TextBox).Text,_
              .LastName = CType(a.FindControl("txtLastName"), TextBox).Text_      
         }).ToList()
另一方面,应该是

GridView1.DataSource = rows.Select(Function(a) New With {_         
              .FirstName = CType(a.FindControl("txtFirstName"), TextBox).Text,_
              .LastName = CType(a.FindControl("txtLastName"), TextBox).Text_      
         }).ToList()

我会说:

dim rows = GridView1.Rows.Cast(of GridViewRow)().Where(Function(a) a <> row).ToList()
dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行)。ToList()

但我无法验证这一点。

我会说:

dim rows = GridView1.Rows.Cast(of GridViewRow)().Where(Function(a) a <> row).ToList()
Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList()
dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行)。ToList()
但我无法测试这一点。

Dim rows=GridView1.rows.Cast(指GridViewRow)().Where(函数(a)一行)。ToList()
Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList()
Dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行)。ToList()
根据,它是

Dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行)。ToList()
这对我来说是正确的


由于您发布了完整的代码块,下面是转换整个代码块的结果:

Protected Sub MoveGridViewRows(sender As Object, e As EventArgs)
    Dim btnUp As Button = DirectCast(sender, Button)
    Dim row As GridViewRow = DirectCast(btnUp.NamingContainer, GridViewRow)
    ' Get all items except the one selected      
    Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList()
    Select Case btnUp.CommandName
        Case "Up"
            'If First Item, insert at end (rotating positions)              
            If row.RowIndex.Equals(0) Then
                rows.Add(row)
            Else
                rows.Insert(row.RowIndex - 1, row)
            End If
            Exit Select
        Case "Down"
            'If Last Item, insert at beginning (rotating positions)
            If row.RowIndex.Equals(GridView1.Rows.Count - 1) Then
                rows.Insert(0, row)
            Else
                rows.Insert(row.RowIndex + 1, row)
            End If
            Exit Select
    End Select
    GridView1.DataSource = rows.[Select](Function(a) New With { _
        Key .FirstName = DirectCast(a.FindControl("txtFirstName"), TextBox).Text, _
        Key .LastName = DirectCast(a.FindControl("txtLastName"), TextBox).Text _
    }).ToList()
    GridView1.DataBind()
End Sub
受保护的子MoveGridViewRows(发件人作为对象,e作为事件参数)
Dim btnUp As Button=DirectCast(发送方,按钮)
作为GridViewRow=DirectCast的尺寸行(btnUp.NamingContainer,GridViewRow)
'获取除所选项目之外的所有项目
Dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行).ToList()
选择Case btnUp.CommandName
案例“上升”
'如果是第一项,则在末端插入(旋转位置)
如果row.RowIndex.等于(0),则
行。添加(行)
其他的
rows.Insert(row.RowIndex-1,row)
如果结束
退出选择
案例“下降”
'如果是最后一项,则在开头插入(旋转位置)
如果row.RowIndex.Equals(GridView1.Rows.Count-1),则
行。插入(0,行)
其他的
rows.Insert(row.RowIndex+1,row)
如果结束
退出选择
结束选择
GridView1.DataSource=行。[选择](函数(a)使用{_
Key.FirstName=DirectCast(a.FindControl(“txtFirstName”),TextBox)_
Key.LastName=DirectCast(a.FindControl(“txtLastName”),TextBox.Text_
})托利斯先生()
GridView1.DataBind()
端接头
根据,它是

Dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行)。ToList()
这对我来说是正确的


由于您发布了完整的代码块,下面是转换整个代码块的结果:

Protected Sub MoveGridViewRows(sender As Object, e As EventArgs)
    Dim btnUp As Button = DirectCast(sender, Button)
    Dim row As GridViewRow = DirectCast(btnUp.NamingContainer, GridViewRow)
    ' Get all items except the one selected      
    Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList()
    Select Case btnUp.CommandName
        Case "Up"
            'If First Item, insert at end (rotating positions)              
            If row.RowIndex.Equals(0) Then
                rows.Add(row)
            Else
                rows.Insert(row.RowIndex - 1, row)
            End If
            Exit Select
        Case "Down"
            'If Last Item, insert at beginning (rotating positions)
            If row.RowIndex.Equals(GridView1.Rows.Count - 1) Then
                rows.Insert(0, row)
            Else
                rows.Insert(row.RowIndex + 1, row)
            End If
            Exit Select
    End Select
    GridView1.DataSource = rows.[Select](Function(a) New With { _
        Key .FirstName = DirectCast(a.FindControl("txtFirstName"), TextBox).Text, _
        Key .LastName = DirectCast(a.FindControl("txtLastName"), TextBox).Text _
    }).ToList()
    GridView1.DataBind()
End Sub
受保护的子MoveGridViewRows(发件人作为对象,e作为事件参数)
Dim btnUp As Button=DirectCast(发送方,按钮)
作为GridViewRow=DirectCast的尺寸行(btnUp.NamingContainer,GridViewRow)
'获取除所选项目之外的所有项目
Dim rows=GridView1.rows.Cast(属于GridViewRow)().Where(函数(a)一行).ToList()
选择Case btnUp.CommandName
案例“上升”
'如果是第一项,则在末端插入(旋转位置)
如果row.RowIndex.等于(0),则
行。添加(行)
其他的
rows.Insert(row.RowIndex-1,row)
如果结束
退出选择
案例“下降”
'如果是最后一项,则在开头插入(旋转位置)
如果row.RowIndex.Equals(GridView1.Rows.Count-1),则
行。插入(0,行)
其他的
rows.Insert(row.RowIndex+1,row)
如果结束
退出选择
结束选择
GridView1.DataSource=行。[选择](函数(a)使用{_
Key.FirstName=DirectCast(a.FindControl(“txtFirstName”),TextBox)_
Key.LastName=DirectCast(a.FindControl(“txtLastName”),TextBox.Text_
})托利斯先生()
GridView1.DataBind()
端接头

在线转换工具生成了什么?它们导致了什么错误?您的编辑仍然没有解决@Servy的问题-我不确定完整的代码块有什么帮助。也就是说,我将更新我的答案以转换整个内容。在线工具将此报告为VB…Dim rows=GridView1.rows.Cast(GridViewRow的)()。其中(函数(a)一行)。ToList()…但是在VS编辑器中,代码失败,如下所示。在线转换工具生成了什么?它们导致了什么错误?您的编辑仍然没有解决@Servy的问题-我不确定完整的代码块有什么帮助。话虽如此,我将更新我的答案以转换整个内容。在线工具将此报告为VB…Dim rows=GridView1.rows.Cast(Of GridViewRow)()。其中(函数(a)一行)。ToList()…但在VS编辑器中,代码失败,如您的answer上所示。是的,我刚刚注意到,在比较我们其他相同的答案时。;-)更新了完整C代码块的帖子。问题是两行,LINQYup,我只是注意到,在比较我们其他方面相同的答案时更新了完整C代码块的帖子。问题是在我看到Chris做了更正之前,LINQI贴了这两行字——Chris的回答是正确的(分号除外)。你在Bobson的帖子上的编辑修复了第一个错误。我在这一行仍然收到一个“名称a未声明”错误……GridView1.DataSource=rows。[选择](a>=New WithBobson对该语句的转换对我来说很好-除了你可以简单地使用“选择”而不是“[选择]”(VB知道“选择”在此上下文中不用作关键字)。谢谢,正是这一部分修复了它-“a row”应该是“a IsNot row”。你能告诉我有一种方法可以在最后一行的gridview中进行迭代吗?…GridView1.Datasource=rows。[选择](函数(a)使用{Key.FirstName=DirectCast(a.FindControl(“txtFirstName”),TextBox)新建,TextBox).Text{}).ToList()…这显然是为示例编写的,实际上我的网格中有更多的列。我想在