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または、おそらく1つの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 に答える