我试图看看他们是否有任何可能的方法来组合数据源值。数据的结构将是相同的,
Year| Amount Used| Amount Collected | Amount Saved
我想要做的是将IQueryable<T>
数据类型 T是相同类型的数据源组合在一起,然后将其绑定到gridview。
只有我不想加在一起的列是年份,因为我希望源根据年份进行组合,并且每年也可能不在数据源中。
这怎么可能,唯一的方法是为每个源制作一个foreach语句并手动组合它们?
我正在寻找更简单的东西
答案 0 :(得分:1)
使用LINQ的Union运算符组合两种IQueryable数据类型。我将使用union操作的结果创建一个新变量。从那里逐年分组并使用聚合函数(总和可能是您正在寻找的)来执行计算。
编辑:这是一个例子。我会告诉你我自己正在学习LINQ,并且有很多教程(谷歌是你的朋友)。我一直在学习VB中的LINQ,它的语法与C#略有不同。我尽力在C#中编写示例,但它可能不完全正确,但会给你一个很好的起点。
var unionResult = dataSet1.Union(dataSet2);
var groupedResult = from r in unionResult
group r By r.Year into g
Select new
{
Year = g.Key.Year,
TotalUsed = g.Sum(r => r.AmountUsed),
TotalCollected = g.Sum(r => r.AmountCollected),
TotalSaved = g.Sum(r => r.AmountSaved
};
如果您正在使用LINQ to DataSet,则可能需要将第一行替换为:
var unionResult = dataSet1.AsEnumerable().Union(dataSet2.AsEnumerable());
以下是我一直使用的一些资源(谷歌除外)。 Scott Gu的blog(在右键单击LINQ标签)。 4 Guys也有一个很好的多部分系列。