我正在尝试使用LINQ准备图形数据。
我无法解决的问题是如何计算“与前一项的差异”。
我期望的结果是
ID= 1, Date= 现在, DiffToPrev= 0;
ID= 1, Date= 现在+1, DiffToPrev= 3;
ID= 1, Date= 现在+2, DiffToPrev= 7;
ID= 1, Date= 现在+3, DiffToPrev= -6;
等等...
您能帮我创建这样的查询吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class MyObject
{
public int ID { get; set; }
public DateTime Date { get; set; }
public int Value { get; set; }
}
class Program
{
static void Main()
{
var list = new List<MyObject>
{
new MyObject {ID= 1,Date = DateTime.Now,Value = 5},
new MyObject {ID= 1,Date = DateTime.Now.AddDays(1),Value = 8},
new MyObject {ID= 1,Date = DateTime.Now.AddDays(2),Value = 15},
new MyObject {ID= 1,Date = DateTime.Now.AddDays(3),Value = 9},
new MyObject {ID= 1,Date = DateTime.Now.AddDays(4),Value = 12},
new MyObject {ID= 1,Date = DateTime.Now.AddDays(5),Value = 25},
new MyObject {ID= 2,Date = DateTime.Now,Value = 10},
new MyObject {ID= 2,Date = DateTime.Now.AddDays(1),Value = 7},
new MyObject {ID= 2,Date = DateTime.Now.AddDays(2),Value = 19},
new MyObject {ID= 2,Date = DateTime.Now.AddDays(3),Value = 12},
new MyObject {ID= 2,Date = DateTime.Now.AddDays(4),Value = 15},
new MyObject {ID= 2,Date = DateTime.Now.AddDays(5),Value = 18}
};
Console.WriteLine(list);
Console.ReadLine();
}
}
}
ByFormer
或ByAdjacent
:) - M.kazem AkhgaryIEnumerator<T>
确实 实现了IDisposable
,你应该总是使用它 - 就像foreach
隐式地使用它一样。非泛型版本则不会。 - Jon Skeet