江湖救急,一个算法,Linq计算
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”方法,但是自己不知道怎样确定索引范围???
[解决办法]
lists.Skip(5).Take(13).Sum()
lists.Take(5).Sum()
lists.Skip(18).Sum()
[解决办法]
static void Main(string[] args) { List<Tuple<int, double>> lists = new List<Tuple<int, double>>(); for (int i = 0; i < 24; i++) { lists.Add(new Tuple<int, double>(i,i)); } Console.WriteLine(lists.Where((u) => u.Item1 >= 0 && u.Item1 <= 4).Sum((u) => u.Item2)); Console.WriteLine(lists.Where((u) => u.Item1 >= 5 && u.Item1 <= 17).Sum((u) => u.Item2)); Console.WriteLine(lists.Where((u) => u.Item1 >= 18 && u.Item1 <= 23).Sum((u) => u.Item2)); }
[解决办法]
List<double> lists = new List<double>(); for (int i = 0; i < 24; i++) { lists.Add(i); } Console.WriteLine(lists.Take(5).Sum()); Console.WriteLine(lists.Skip(5).Take(13).Sum()); Console.WriteLine(lists.Skip(18).Sum());
[解决办法]
ls正解
再给一个办法
Console.WriteLine(lists.Select((x, i) => new { x, i }).Where(x => x.i >= 5 && x.i <= 13).Sum(x => x.x));
[解决办法]
代码如下:
List<double> lists = new List<double>();
for (int i = 0; i < 24; i++)
{
lists.Add(i);
}
Response.Write("索引为0~4的结果为:" + lists.Take(5).Sum() + "</br>");
Response.Write("索引为5~17的结果为:" + lists.Skip(5).Take(13).Sum() + "</br>");
Response.Write("索引为18~23的结果为:" + lists.Skip(18).Sum() + "</br>");
结果如下:
0~4的结果为:10
5~17的结果为:143
18~23的结果为:123
[解决办法]
Linq 都玩的很溜啊,,,我Linq都不会。。