执行数据表的聚合功能



我必须像Datatable.Compute一样在DataTable上执行聚合函数,但计算返回我想在数据表上执行聚合函数并获取数据行的对象。

_summaryTable.Compute("min(FareAdult)", whereClause 
                        + "AirlineDisplayName='" 
                        + Convert.ToString(airline["AirlineDisplayName"]) 
                        + "' and ( Stops=0) ");

但上面的代码只会返回 min(FareAdult),但我想根据数据表中的上述条件选择两列。

我怎样才能通过林克做到这一点我必须选择最小(成人票价)和同一行的Totel价格

使用Select代替compute

_summaryTable.Select("FilterationExpression");
DataRow[] dr = _summaryTable.Select("min(FareAdult),AirlineDisplayName='" + Convert.ToString(airline["AirlineDisplayName"]) + "' and ( Stops=0) ");

下面是一个 LINQ 方法。这是伪代码,因为我不知道您的行的键入,并且我无法对其进行测试,但想法是相同的。使用 LINQ 选择与您的条件匹配的行,按成人票价排序,然后选择第一个(最小值)。

var minResult = (from row in _summaryTable.Rows
                where row.AirlineDisplayName == airline["AirlineDisplayName"] && row.Stops == 0
                orderby row.FareAdult
                select row).FirstOrDefault();
private void CalcColumns()
{
    DataTable table = new DataTable ();
    //enter code here
    // Create the first column.
    DataColumn priceColumn = new DataColumn();
    priceColumn.DataType = System.Type.GetType("System.Decimal");
    priceColumn.ColumnName = "price";
    priceColumn.DefaultValue = 50;
    // Create the second, calculated, column.
    DataColumn taxColumn = new DataColumn();
    taxColumn.DataType = System.Type.GetType("System.Decimal");
    taxColumn.ColumnName = "tax";
    taxColumn.Expression = "price * 0.0862";
    // Create third column.
    DataColumn totalColumn = new DataColumn();
    totalColumn.DataType = System.Type.GetType("System.Decimal");
    totalColumn.ColumnName = "total";
    totalColumn.Expression = "price + tax";
    // Add columns to DataTable.
    table.Columns.Add(priceColumn);
    table.Columns.Add(taxColumn);
    table.Columns.Add(totalColumn);
    DataRow row = table.NewRow();
    table.Rows.Add(row);
    DataView view = new DataView(table);
    dataGrid1.DataSource = view;
}

相关内容

  • 没有找到相关文章