簡體   English   中英

從VB轉換的C#不起作用

[英]C# converted from VB doesn't work

我使用代碼轉換器從VB轉到C#,但在C#中遇到錯誤。 具體來說, Itemstring.join(",", Flop.ToArray) 錯誤說,它不包含一個定義item ,但它在VB中的作品。

VB

Dim Flop As New List(Of String)
    For x As Integer = 0 To Dataset9.Tables(0).Rows.Count - 1 'ROWS
        Flop.Add(Dataset9.Tables(0).Rows(x).Item("Id"))
    Next
    strAllRoleNames = String.Join(",", Flop.ToArray)

C#

List<string> Flop = new List<string>();

    for (int x = 0; x <= Dataset9.Tables[0].Rows.Count - 1; x++)
      {
         Flop.Add(Dataset9.Tables[0].Rows[x].Item["Id"]);
      }
 strAllRoleNames = string.Join(",", Flop.ToArray);

嘗試這個:

List<string> Flop = new List<string>();

    for (int x = 0; x <= Dataset9.Tables[0].Rows.Count - 1; x++)
      {
         Flop.Add(Dataset9.Tables[0].Rows[x]["Id"].ToString());
      }
 strAllRoleNames = string.Join(",", Flop.ToArray());

他們在這里缺少的三個鑰匙

  1. 連續訪問該項目,您需要使用C#默認索引器,因為C#中不存在該項目
  2. 由於行中的單元格是一個對象,並且您需要一個字符串,因此需要顯式調用ToString
  3. 調用ToArray時,您需要在C#結尾

嘗試...

Flop.Add(Dataset9.Tables[0].Rows[x]["Id"].ToString());

ToArray是一個method()

List<string> Flop = new List<string>();

    for (int x = 0; x <= Dataset9.Tables[0].Rows.Count - 1; x++)
      {
        Flop.Add(Dataset9.Tables[0].Rows[x]["Id"]);
      }
 strAllRoleNames = string.Join(",", Flop.ToArray());

您可以嘗試以更簡潔的方式嘗試以下操作:

strAllRoleNames = string.Join(",", Dataset9.Tables[0].AsEnumerable()
                                   .Select(C => Convert.ToString(C["Id"]))
                                   .ToArray());

嘗試以下更改:

Dataset9.Tables[0].Rows[x].Item["Id"] => Dataset9.Tables[0].Rows[x]["Id"]

Flop.ToArray => Flop.ToArray()    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM