2011-02-15 26 views
6

MyObject öğesinin bir listesini veren bir linq sorgum var. TheIndex adlı MyObject'e bir özellik eklemek ve sıradaki öğenin ordinatını içermek istiyorum.Linq sorgu sonucuna dizin ekleniyor

var TheResult = from d in MyDataContext 
       where..... 
       select new MyObject 
       { 
        Property1 = d.whatever, 

        TheIndex = ? 

       } 

sorgu MyObject listesini döndürür ve ben onun mülkiyet biri olarak dizin içermesi için listedeki her öğeyi istiyorum: Bir başka deyişle

, böyle bir şey gerekiyor.

Teşekkürler.

+0

Olası yinelenen [Linq sonuçlarına bir indeks alanını nasıl eklerim] (http://stackoverflow.com/questions/269058/how-do-you-add-an-index-field-to- linq-results) –

cevap

14

Sorgu sözdiziminden kurtulduktan sonra, aradığınız dizini veren bir Select aşırı yüklemesi bulacaksınız.

var result = MyDataContext 
    .Where(d => d.Prop == "A") 
    .AsEnumerable() 
    .Select((d, i) => 
     new MyObject() { 
     Property1 = d.whatever, 
     TheIndex = i 
    }); 
ait
+0

select deyiminden hemen önce, parantez üzerinde bir hata var: bir sorgu gövdesi bir select yan tümce veya bir grup cümlesiyle bitmelidir. – frenchie

+1

Evet - Bunu tamir ettim. Sadece sorgu sözdizimini tamamen boşaltıp şimdi varmış gibi yöntem sözdizimi ile devam edin. –

+0

Yöntem sözdizimine dönüştürdüğümde herhangi bir intelliense alamıyorum: Yanlış mı yapıyorum? Sorgu sözdiziminde var Output = d içinde MyDC.Table1 içinde d.UserID == theUserId burada d.Date == TheDate.Date yeni Model {...} seçin. – frenchie