我有一张表,其中包含数百种产品的多年销售数据。 简化,我有3列:ProductID,Quantity,[和Date(周/年),与问题无关]
为了处理数据,我想使用LINQ获取所有内容。在下一步中,我想为销售数据创建一个对象列表,其中一个Object由ProductId和相应销售数据的数组组成。
编辑:之后,我会将销售作为数组传递给统计软件(R with R dot NET),以便在我的程序中处理所有检索到的数据产品,以获得预测。
是否有简单的(内置)方法来实现这一目标?
如果没有,为了按产品处理销售产品, 我应该使用循环创建提到的List吗?
或者,就性能而言,我应该避免这一切,并且:
根据需要从数据库中获取产品的销售数据?
或者我应该从结果集中创建一个大的List(带有query.toList())并从那里获得我的销售数据产品?
答案 0 :(得分:0)
您可以使用id和int数据列表创建Product类。如下:
Public class Product{
public List<int> list = new List<int>();
public int Id;
Public Product(int id,params int[] list){
Id = id;
for (int i = 0; i < list.Length; i++)
{
list.Add(list[i]);
}
}
}
然后使用:
query.where(x=>new Product(x.ProductId,x.datum1,x.datum2,x.datum3));
答案 1 :(得分:0)
呃,像是
var groupedByProductId = query.GroupBy(p => p.ProductId).Select(g => new
{
ProdcutId = g.Key,
Quantity = g.Sum(p => p.Quantity)
});
或者,如果您不想要求和,则instread需要将数量作为由int
排序的Date
数组。
var groupedByProductId = query.GroupBy(p => p.ProductId).Select(g => new
{
ProdcutId = g.Key,
Quantities = g.OrderBy(p => p.Date).Select(p => p.Quantity).ToArray()
});
或者您可能需要传递数据并且匿名类型不合适。您可以制作IDictionary<int, int[]>
。
var salesData = query.GroupBy(p => p.ProductId).ToDictionary(
g => g.Key,
g => g.OrderBy(p => p.Date).Select(p => p.Quantity).ToArray());
以后,
int productId = ...
int[] orderedQuantities = salesData[productId];
将是有效代码(减去省略号。)