0
var objTypeIndex = from u in context.sistema_DocType_Index where u.docTypeId == id select u.indexId;
indexIds = objTypeIndex.ToList();
int count = indexIds.Count();

string[] names = new string[] {};
int i = 0;                    

foreach (int indexId in indexIds)
{
    //resgata nome do indice e armazena em um array
    string strIndiceID = indexId.ToString();
    int indiceID = Convert.ToInt32(strIndiceID);
    var objIndexName = from u in context.sistema_Indexes where u.id == indiceID select u.idName;
    name = 

    names[i] = objIndexName.First();

    i++;
}

最后一行上方的这一行:names[i] = objIndexName.First();

给出以下错误:

System.IndexOutOfRangeException: Index was outside the bounds of the array.

我知道那是什么意思..我只是不知道为什么。

4

2 回答 2

4

看这里:

string[] names = new string[] {};

您已经创建了一个数组。您不能将任何元素放入该数组中。i此语句没有任何价值:

names[i] = objIndexName.First();

目前尚不清楚您要做什么,但也许您想要List<string>构建(使用Add)而不是数组?或者你可以用一个 LINQ 查询来完成整个事情......

于 2012-12-04T19:23:44.393 回答
3

代替

string[] names = new string[] {};

经过

var names = new List<string>();

而不是

names[i] = objIndexName.First();

采用

names.Add(objIndexName.First());

然后,您将能够得到您的数组,如下所示:

var nameArray = names.ToArray();
于 2012-12-04T19:27:31.657 回答