2015-10-06 13 views
5

Bu kodu vardır ne ben yapmaya çalışacağım contractsIDList null tip yapmakInt dizisi nasıl yapılır Nullable? Bu satırda</p> <pre><code>var contractsID = contracts.Select(x => x.Id); int?[] contractsIDList = contractsID.ToArray();//for debug </code></pre> <p>:

Can not implicitly convert type int[] to int

geçerli:

int?[] contractsIDList = contractsID.ToArray();//for debug 

bu hatayı alıyorum.

Nasıl int dizisi Nullable yapılır?

+4

[C# null diziler] (http://stackoverflow.com/questions/16069997/c-sharp-nullable-arrays) –

+0

Niçin dizilemez bir dizi istiyorsun? Bir referans türü olarak zaten null. –

+0

Hata mesajını anlamıyorum. X.Id 'int?' Veya 'int' mi? Aslında bir int [] 'dan' int? [] 'Oluşturmak ister misiniz? –

cevap

9

hata gerektiği olsun geçerli:

int?[] contractsIDList = contractsId.Cast<int?>().ToArray();//for debug 
+1

IMO, belirsiz bir soru çok fazla anlaşmazlık doğurmuştur. – spender

4

sizin durumunuzda en kolay yolu Select den int? elde etmektir:

Can not implicitly convert type int[] to int?[]

Böylece değerleri dönüştürmeniz gerekir

var contractsID = contracts.Select(x => (int?)x.Id); 
int?[] contractsIDList = contractsID.ToArray(); 
+1

Ayrıca "contracts.Select (x => new int? (X.Id)); – stuartd

4

Arrays are always reference types - so they're already nullable.

Ama aslında bir int[] (Id null olmadığı için) bir int?[] almak istiyorum sanırım.

int[] contractsID = contracts.Select(x => x.Id).ToArray(); 
int?[] contractsIDList = Array.ConvertAll(contractsID, i => (int?)i); 

veya LINQ sorgusunda doğrudan dökme: Sen Array.ConvertAll kullanabilirsiniz

int?[] contractsIDList = contracts.Select(x => (int?) x.Id).ToArray(); 
1

bunu kullanın Bir

int?[] contractsIDList = contractsID.ConvertAll<int?>((i) => { int? ni = i; return ni; }).ToArray(); 
+0

"% 100 yorumunuzun doğru olup olmadığını merak ediyorum, hiç işe yaramıyor. Eğer contractsID bir dizidir (nedir), diziyi parametre olarak iletmeniz gerekir, örnek bir yöntem değildir. –

+0

contractsID nedir? – Ramankingdom

+0

OP onun kodunu gösterdi: var contractsID = contracts.Select (x => x.Id); ', bir IEnumerable '. –

İlgili konular