2012-04-18 61 views
0

我寫了下面的LINQ代碼在C#Linq的語法C#從表

 var groupedData = from b in dt.AsEnumerable() 
         group b by b.Field<string>("TypeColor") into g 

         select new 
         { 

          Key = g.Key, 

          Value = g.Select(r => r.Field<int>("Price")), 
          Price = g.Select(r => r.Field<int>("Price")) 

         }; 

foreach (var g in groupedData) 
    { 
     string s = g.Key; 
} 

選擇兩個領域如何選擇兩個或多個字段從數據表和組表中有一個字段。 任何機構可以幫助我嗎? 這裏DT是從數據庫

+0

你是否應該'sum','max' ,'min','avg'或'top 1'來獲取字段? – Arion 2012-04-18 09:40:56

+0

你是否想創建一個新列?爲新列使用表達式。 http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx – Akanksha 2012-04-18 09:43:40

+0

我想將下面的sql語句轉換爲linq語句「從col1的table1組中選擇col1,col2」。任何想法?? – user1237799 2012-04-18 10:30:26

回答

0

您需要聚合的字段,如果你已經分組行(如SQL類似)結合的DataTable:

var groupedData = from b in dt.AsEnumerable() 
        group b by b.Field<string>("TypeColor") into g 
        select new 
        { 
         Color = g.Key, 
         PriceSum = g.Sum(r => r.Field<int>("Price")), 
         FirstValue = g.First().Field<int>("Value") 
        }; 

foreach (var g in groupedData) 
{ 
    string color = g.Color; 
    Double priceSum = g.PriceSum; 
    int firstValue = g.FirstValue; 
} 
+0

嗨,這段代碼給了我一個錯誤「指定的轉換無效」。 – user1237799 2012-04-18 10:25:58

+0

我想將下面的sql語句轉換爲linq語句「從col1的table1組中選擇col1,col2」。任何想法?? – user1237799 2012-04-18 10:28:41

+0

@ user1237799:由於您也需要聚合col2,因此SQL在T-SQL(MS SQL-Server)中將無效。但是'col1'和'col2'是什麼類型? – 2012-04-18 10:32:01