Возьмите сумму значений в определенных индексах массива, используя Linq - PullRequest
1 голос
/ 06 мая 2011

У меня есть массив объектов как

object[] arr=new object[]
                            {
                                "Kushan",       // Index = 0 ( data Type is String)
                                10,             // Index = 1 ( data Type is double)
                                15,             // Index = 2 ( data Type is double)
                                25,             // Index = 3 ( data Type is double)
                                "yytdhj"        // Index = 4 ( data Type is String)
                                35,             // Index = 5 ( data Type is double)
                                88,             // Index = 6 ( data Type is double)
                                65,             // Index = 7 ( data Type is double)
                                98,             // Index = 8 ( data Type is double)
                                "Address"       // Index = 9 ( data Type is String)
                            };

Я хочу взять сумму элементов по индексу 1,2,3,5,6,7,8 Возможно ли это сделать с помощью linq? если можно как?


P: S:

Извините за то, что вас неправильно поняли, я действительно хочу взять сумму, используя определенные индексы. не ищет тип данных.

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

В этом случае вы добавляете все значения double вместе.Если это то, что вам действительно нужно, вы можете использовать:

var sum = arr.OfType<double>().Sum();

В противном случае, если вам действительно нужно использовать индексы, вам нужно что-то вроде:

var sum = indexes.Select(x => (double) arr[x])
                 .Sum();

(Предполагается, что у вас есть индексы в какой-то коллекции).

3 голосов
/ 06 мая 2011

В приведенном вами примере тип данных примера был infact int, а не double. Вот полный рабочий пример использования OfType ().

 object[] arr=new object[]
                        {
                            "Kushan",       // Index = 0 ( data Type is String)
                            10D,             // Index = 1 ( data Type is double)
                            15D,             // Index = 2 ( data Type is double)
                            25D,             // Index = 3 ( data Type is double)
                            "yytdhj",        // Index = 4 ( data Type is String)
                            35D,             // Index = 5 ( data Type is double)
                            88D,             // Index = 6 ( data Type is double)
                            65D,             // Index = 7 ( data Type is double)
                            98D,             // Index = 8 ( data Type is double)
                            "Address"       // Index = 9 ( data Type is String)
                        };
        var sum = arr.OfType<double>().Sum();
...