C# 将int转换为int[]

C# 将int转换为int[],c#,asp.net,C#,Asp.net,我有一个数据集,我正试图将数据集的所有ID放入一个数据行中,最终将其保存在一个int数组中。这对我不起作用。它说“不能从int类型隐式转换为int[]” 提前感谢。您必须创建一个新的int数组并将int放入其中 int sampleID = new int[1]; sampleID[0] = Convert.ToInt32(dr["Id"]); 我认为这种速记法也适用: int[] SampleID = new int[]{Convert.ToInt32(dr["Id"])}; 您必须创建一

我有一个数据集,我正试图将数据集的所有ID放入一个数据行中,最终将其保存在一个int数组中。这对我不起作用。它说
“不能从int类型隐式转换为int[]”


提前感谢。

您必须创建一个新的int数组并将int放入其中

int sampleID = new int[1];
sampleID[0] = Convert.ToInt32(dr["Id"]);
我认为这种速记法也适用:

int[] SampleID = new int[]{Convert.ToInt32(dr["Id"])};

您必须创建一个新的int数组并将int放入其中

int sampleID = new int[1];
sampleID[0] = Convert.ToInt32(dr["Id"]);
我认为这种速记法也适用:

int[] SampleID = new int[]{Convert.ToInt32(dr["Id"])};

那是因为它是一个数组!尝试:

int[] SampleID = new int[] {(int)dr["Id"]);

那是因为它是一个数组!尝试:

int[] SampleID = new int[] {(int)dr["Id"]);

嗯,是的。请看这一行:

int[] SampleID = Convert.ToInt32(dr["Id"]);
右侧是一个
int
(Convert.ToInt32的结果),但您正在尝试将其转换为数组

如果您想要所有的Id,我建议您创建一个
列表
并在行上迭代,为每一行调用
List.Add(Convert.ToInt32(dr[“Id]”))
,然后在最后调用
ToArray()

或者,使用LINQ-类似于:

int[] ids = ds.Tables[0].AsEnumerable()
                        .Select(dr => dr.Field<int>("Id"))
                        .ToArray();
List<int> ids = new List<int>();
foreach(Datarow dr in ds.Tables[0].Rows)
{
    ids.Add(Convert.ToInt32(dr["Id"]));
}
int[] SampleID = ids.ToArray();
int[]ids=ds.Tables[0].AsEnumerable()
.Select(dr=>dr.Field(“Id”))
.ToArray();

是的。看这行:

int[] SampleID = Convert.ToInt32(dr["Id"]);
右侧是一个
int
(Convert.ToInt32
的结果),但您正在尝试将其转换为数组

如果您想要所有的Id,我建议您创建一个
列表
并在行上迭代,为每一行调用
List.Add(Convert.ToInt32(dr[“Id]”))
,然后在最后调用
ToArray()

或者,使用LINQ-类似于:

int[] ids = ds.Tables[0].AsEnumerable()
                        .Select(dr => dr.Field<int>("Id"))
                        .ToArray();
List<int> ids = new List<int>();
foreach(Datarow dr in ds.Tables[0].Rows)
{
    ids.Add(Convert.ToInt32(dr["Id"]));
}
int[] SampleID = ids.ToArray();
int[]ids=ds.Tables[0].AsEnumerable()
.Select(dr=>dr.Field(“Id”))
.ToArray();

您只是获取了一个ID,我想您可能是想在所有行中循环获取所有ID

也许你想要这样的东西:

int[] ids = ds.Tables[0].AsEnumerable()
                        .Select(dr => dr.Field<int>("Id"))
                        .ToArray();
List<int> ids = new List<int>();
foreach(Datarow dr in ds.Tables[0].Rows)
{
    ids.Add(Convert.ToInt32(dr["Id"]));
}
int[] SampleID = ids.ToArray();
List id=new List();
foreach(ds.Tables[0].行中的数据行dr)
{
添加(转换为32(dr[“Id”]);
}
int[]SampleID=ids.ToArray();

您只是获取了一个ID,我想您可能是想在所有行中循环获取所有ID

也许你想要这样的东西:

int[] ids = ds.Tables[0].AsEnumerable()
                        .Select(dr => dr.Field<int>("Id"))
                        .ToArray();
List<int> ids = new List<int>();
foreach(Datarow dr in ds.Tables[0].Rows)
{
    ids.Add(Convert.ToInt32(dr["Id"]));
}
int[] SampleID = ids.ToArray();
List id=new List();
foreach(ds.Tables[0].行中的数据行dr)
{
添加(转换为32(dr[“Id”]);
}
int[]SampleID=ids.ToArray();

Convert.ToInt32返回单个int而不是它们的数组:您是尝试获取单个ID(转换为单个int)还是获取所有ID。您的代码是部分单个,部分多。Convert.ToInt32返回单个int而不是它们的数组:您是尝试获取单个ID(转换为单个int)或者获取全部ID。你的代码部分是单值,部分是多值。你打败了我,所以对你来说+1。老实说,我不明白为什么这实际上是一件有用的事情。为什么要创建一个单元素数组,而不仅仅是将单个值保留在它自己的变量中?这不像数组以后可以扩展……你打败了我,所以对你来说+1是一样的,我不能老实说,我不明白为什么这实际上是一件有用的事情。为什么要创建一个单元素数组,而不仅仅是将单个值保留在它自己的变量中?这不像数组以后可以扩展。。。