从VB转换的C#不起作用

时间:2013-09-02 16:32:16

标签: c#

我使用代码转换器从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);

5 个答案:

答案 0 :(得分: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#中不存在项目
  2. 由于连续的单元格是一个对象而你想要一个字符串,需要显式调用ToString
  3. 调用ToArray时,需要C#
  4. 末尾的()

答案 1 :(得分:2)

尝试...

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

答案 2 :(得分: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());

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

尝试以下更改:

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

Flop.ToArray => Flop.ToArray()