none
一个算法题,Linq计算 RRS feed

  • 问题

  •  List<double>  lists=new  List<double>();  
                for (int i=0;i<24;i++)
                {
                    lists.Add(i);
                }

    如上所示,“lists”中已经有了“0~23”,一共24个数值。

    问题:

            现在想求“ lists”集合中,索引为“5~17”的值的“和”。   以及,索引范围为“0~4”,“18~23”对应的值的和。。。

             这时应该怎么做???    语句该怎么写???     "Linq"中有“Sum”方法,但是自己不知道怎样确定索引范围???


    Science and technology is my lover.

    2012年9月27日 10:08

答案

  • Hi starrycheng,

    你可以试下下面的代码。

    List<double>  lists=new  List<double>();  
    for (int i=0;i<24;i++)
    {
        lists.Add((double)i/10);
    }
    
    var v = (from item in lists
                where
                    lists.IndexOf(item) > 4 && lists.IndexOf(item) < 18
                select item).Sum();


    Bob Wu [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月2日 9:48
    版主

全部回复

  • public static double CustomSum(this List<double> list, int startIndex, int endIndex)
    {
        return list.GetRange(startIndex, (endIndex - startIndex + 1)).Sum();
    }

    2012年9月28日 1:26
  •             var Sum04 = (from a in lists
                             where  a< 5
                             select a).Sum ();

                var Sum517 = (from a in lists
                             where a < 4 || a < 18
                             select a).Sum();

                var Sum1823 = (from a in lists
                             where a >17
                             select a).Sum(); 

    2012年10月2日 3:42
  • Hi starrycheng,

    你可以试下下面的代码。

    List<double>  lists=new  List<double>();  
    for (int i=0;i<24;i++)
    {
        lists.Add((double)i/10);
    }
    
    var v = (from item in lists
                where
                    lists.IndexOf(item) > 4 && lists.IndexOf(item) < 18
                select item).Sum();


    Bob Wu [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月2日 9:48
    版主
  • lists.skip(4).take(13).sum()
    2012年10月5日 5:15