2016-03-24 21 views
0

kullanarak başka bir Listedeki değere bağlı olarak bir Listede değer sayımı nasıl elde edilir Her değerin bir miktar sayısının olabileceği bir Listü nasıl alabileceğinizi anlıyorum. Birkaç Listeleri var ve ListB sayısını elde etmek istiyorsanızC# LINQ

int countOf1=ListA.Count(x => x ==1); 

Lista olduğu Örneğin: Ben sayısı bir değeri aşağıdaki yapardım "ListA" 1'e eşittir oldu isteseydi Bazı değerlere eşit, yukarıdaki komutu nasıl değiştirebilirim?

Soruyu açıklamak için, bunun nasıl görüneceğinin elektronik tablosunda bir resim göstereceğim. Picda, ListA ve ListB'nin her bir satırdaki bilginin bir çeşit "gözlem" olmasını istediğim gibi her zaman aynı sayıda değere sahip olacağını görebilirsiniz.

Bunu bir döngüde yapabilirim, ancak komut dosyanızın biraz daha basit olmasını isterim. Bu örnek için de fark ettim ki, değer 1'e eşit olan ListA'nın sayısını elde edebilirim. Fakat gelecekte, ListA'da listelenen ortalamalar, yüzdelikler veya diğer toplamalar gibi gelecekte yapmak istediğim başka şeyler yapacağım. bir değere eşittir.

Bunu yapmak mümkün mü? ne yapmak istediğiniz iki listeler resmin üzerine seni tahmin ediyorum katıldı ama dayanması gerektiğini nasıl söz konusu belirtmeyen liste B. üzerine liste A katılmak gibi

Picture of Lists

+0

her 'ListA [x] == 1' için ... netleştirmek için, istiyorum: A örneğin, 1'e eşit olduğu B ortalamasını almak istiyorsa Ardından, aşağıdaki yapabileceğini ListB [x] 'yi aldınız mı? –

+0

Evet, ListB WHERE ListA == 1'deki tüm değerlerin ortalamasını almak istersek tanımlamanın en iyi yolu olurdu. – pelt

cevap

2

Yani görünüyor Bunu endeksle yapmak istiyorum - yani A [0] - B [0], A [1] - B [1], vb. Bu durumda Zip kullanabilirsiniz.

ListA 
.Zip(
    ListB, 
    (a, b) => new { A = a, B = b }) 
.Where(x => x.A == 1) 
.Average(x => x.B);