c#
  • asp.net
  • linq
  • ado.net
  • 2011-05-11 71 views 0 likes 
    0

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

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

    但上面的代码将只返回分钟(FareAdult),但我想基于从数据表中的上述条件来选择所述两个柱。

    我如何能做到这一点通过LINQ的 我必须选择分钟(FareAdult)和同一行的TotelPrice

    回答

    0

    使用Select代替compute

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

    我不得不选择最小FareAdult – Shivi 2011-05-11 13:07:21

    +0

    检查这一点,你会看到你可以添加聚合函数为好。 http://stackoverflow.com/questions/5892993/how-to-calculate-the-sum-of-the-datatable-column-in-asp-net/5893078#5893078 – 2011-05-11 13:13:25

    0

    这里是一个LINQ方法。这是伪代码,因为我不知道你的行的打字方式,我还没有能够测试它,但这个想法是一样的。使用LINQ选择符合条件的行,按FareAdult排序,然后选择第一个(最小)。

    var minResult = (from row in _summaryTable.Rows 
           where row.AirlineDisplayName == airline["AirlineDisplayName"] && row.Stops == 0 
           orderby row.FareAdult 
           select row).FirstOrDefault(); 
    
    0
    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; 
    } 
    
    相关问题