1

我使用代码转换器从 VB 转到 C#,但在 c# 中出现错误。具体来说,错误 onItem和 on string.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);
4

5 回答 5

7

试试这个:

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# 中不存在 Item
  2. 由于一行中的单元格是一个对象并且您想要一个字符串,因此需要显式调用 ToString
  3. 调用 ToArray 时,在 C# 的末尾需要 ()
于 2013-09-02T16:34:52.767 回答
2

尝试...

Flop.Add(Dataset9.Tables[0].Rows[x]["Id"].ToString());
于 2013-09-02T16:34:42.907 回答
2

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"]);
      }
 strAllRoleNames = string.Join(",", Flop.ToArray());
于 2013-09-02T16:35:44.747 回答
1

以更简洁的方式,您可以尝试以下方法:

strAllRoleNames = string.Join(",", Dataset9.Tables[0].AsEnumerable()
                                   .Select(C => Convert.ToString(C["Id"]))
                                   .ToArray());
于 2013-09-02T16:39:48.763 回答
0

尝试以下更改:

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

Flop.ToArray => Flop.ToArray()    
于 2013-09-02T16:37:33.777 回答