结合数据源值asp.net

时间:2011-11-22 14:25:10

标签: c# asp.net datasource iqueryable

我试图看看他们是否有任何可能的方法来组合数据源值。数据的结构将是相同的,

Year| Amount Used| Amount Collected | Amount Saved

我想要做的是将IQueryable<T>数据类型 T是相同类型的数据源组合在一起,然后将其绑定到gridview。

只有我不想加在一起的列是年份,因为我希望源根据年份进行组合,并且每年也可能不在数据源中。

这怎么可能,唯一的方法是为每个源制作一个foreach语句并手动组合它们?

我正在寻找更简单的东西

1 个答案:

答案 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也有一个很好的多部分系列。