使用Linq获取数组的特定索引中的值的总和

时间:2011-05-06 05:30:03

标签: arrays linq multidimensional-array sum

我有一个对象数组

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 个答案:

答案 0 :(得分:4)

在这种情况下,您将所有double值一起添加。如果那是你真正想要的,你可以使用:

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

否则,如果确实需要使用索引,则需要以下内容:

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

(假设你在某种集合中有索引。)

答案 1 :(得分:3)

在您提供的示例中,示例的数据类型为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();