c#
  • asp.net
  • linq
  • ado.net
  • 2011-05-11 52 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; 
    } 
    
    相關問題