0

この C# のコード行を VB に変換するには、いくつかの助けが必要です。私はLinqを初めて使用し、構文に問題があります...

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

いくつかのオンライン変換ツールを試しましたが、どれもうまくいきませんでした。

更新:ここに完全なコードブロックがあります....

protected void MoveGridViewRows(object sender, EventArgs e)  {      
    Button btnUp = (Button)sender;      
    GridViewRow row = (GridViewRow)btnUp.NamingContainer;      
    // Get all items except the one selected      
    var rows = GridView1.Rows.Cast<GridViewRow>().Where(a => a != row).ToList();      
    switch (btnUp.CommandName)      
    {          
         case "Up":              
         //If First Item, insert at end (rotating positions)              
              if (row.RowIndex.Equals(0))
                  rows.Add(row);              
              else                 
                  rows.Insert(row.RowIndex - 1, row);              
                  break;          
         case "Down":              
         //If Last Item, insert at beginning (rotating positions)              
              if (row.RowIndex.Equals(GridView1.Rows.Count - 1))                  
                  rows.Insert(0, row);              
              else                 
                  rows.Insert(row.RowIndex + 1, row);              
                  break;      
         }      
         GridView1.DataSource = rows.Select(a => new     
         {          
              FirstName = ((TextBox)a.FindControl("txtFirstName")).Text,          
              LastName = ((TextBox)a.FindControl("txtLastName")).Text,      
         }).ToList();      
         GridView1.DataBind();  
} 

コンパイル時のVSの特定のエラーは....

エラー 11 アクセス可能な 'Where' を次の引数で呼び出すことができないため、オーバーロードの解決に失敗しました: 拡張メソッド 'Public Function Where(predicate As System.Func(Of System.Web.UI.WebControls.GridViewRow, Integer, Boolean)) As System. 「System.Linq.Enumerable」で定義された Collections.Generic.IEnumerable(Of System.Web.UI.WebControls.GridViewRow): ネストされた関数はデリゲート「System.Func(Of System.Web.UI. WebControls.GridViewRow, Integer, Boolean)'. 拡張メソッド「Public Function Where(predicate As System.Func(Of System.Web.UI.WebControls.GridViewRow, Boolean)) As System.Collections.Generic.IEnumerable(Of System.Web.UI.WebControls.GridViewRow)」で定義'System.Linq.Enumerable': 演算子 '<>' は型 'System.Web.UI に対して定義されていません。

また...

エラー 12 名前 'a' は宣言されていません。C:\Users\Documents\Visual Studio 2008\WebSites\vv_home\roeMgr.aspx.vb 51 46 C:\

HEREはこれまでのVBコードです.....

    Protected Sub MoveGridViewRows(ByVal sender As Object, ByVal 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 IsNot 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](a >= New With { _
     .FirstName = DirectCast(a.FindControl("txtFirstName"), TextBox).Text, _
     .LastName = DirectCast(a.FindControl("txtLastName"), TextBox).Text _
    }).ToList()
    GridView1.DataBind()


End Sub

ありがとう、

4

4 に答える 4

2
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()
于 2012-10-10T15:03:55.377 に答える
1

私の頭のてっぺんから私は言うだろう:

dim rows = GridView1.Rows.Cast(of GridViewRow)().Where(Function(a) a <> row).ToList()

しかし、私はそれをテストする立場にありません。

于 2012-10-10T15:04:31.700 に答える
0
Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).ToList()
于 2012-10-10T15:07:29.083 に答える
0

このコンバーターによると、

 Dim rows = GridView1.Rows.Cast(Of GridViewRow)().Where(Function(a) a <> row).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
于 2012-10-10T15:08:54.540 に答える