Linq 分組(group by)求和(sum)並且按照分隔符(join)分割列數據


今天在使用linq處理一下需求時碰到一點小問題,特此記錄。

  需求:

    按照品名相同的進行匯總,數量相加、表號按分號分割顯示

 

1、組織測試數據表

 DataTable tableA1 = new DataTable();
            tableA1.Columns.AddRange(new DataColumn[] { new DataColumn("品名"), new DataColumn("規格"), new DataColumn("表號"),new DataColumn("數量") });
            tableA1.Rows.Add(new object[] { "螺旋式", "LS-X", "111","2" });
            tableA1.Rows.Add(new object[] { "螺旋式", "LS-X", "222","1" });
            tableA1.Rows.Add(new object[] { "指針式", "LX-3", "523","2" });
            tableA1.Rows.Add(new object[] { "其他式", "L-1", "666", "2" });
            tableA1.Rows.Add(new object[] { "其他式", "L-1", "456", "1" });
            tableA1.Rows.Add(new object[] { "其他式", "L-1", "990", "2" });

 

2、使用linq 進行查詢處理

 var query = from c  in t.AsEnumerable()
                        group c by new {
                            pingming = c.Field<string>("品名"),
                            guige = c.Field<string>("規格")
                                        }
                            into s
                            select new
                            {
                                pingming = s.Select(p => p.Field<string>("品名")).First(),
                                shuliang = s.Sum(p => Convert.ToInt32(p.Field<string>("數量"))),
                                guige = s.Select(p => p.Field<string>("規格")).First(),
                                biaohao = string.Join(";",s.Select(p => p.Field<string>("表號")))                             };

             DataTable tbl = tableA1.Clone();
             query.ToList().ForEach(p => tbl.Rows.Add(p.pingming, p.guige,p.biaohao,p.shuliang));

查詢結果:

 

重點:

String.Join 方法

連接指定數組的元素或集合的成員,在每個元素或成員之間使用指定的分隔符。

String.Join 方法 重載

載此成員。有關此成員的完整信息(包括語法、用法和示例),請單擊重載列表中的相應名稱。

  名稱 說明
公共方法 靜態成員 受 Silverlight for Windows Phone 支持 Join(String, IEnumerable<String>) 串聯類型為 StringIEnumerable<T> 構造集合的成員,其中在每個成員之間使用指定的分隔符。
公共方法 靜態成員 受 Silverlight for Windows Phone 支持 Join<T>(String, IEnumerable<T>) 串聯字符串集合的成員,其中在每個成員之間使用指定的分隔符。
公共方法 靜態成員 受 Silverlight for Windows Phone 支持 Join(String, Object[]) 串聯對象數組的各個元素,其中在每個元素之間使用指定的分隔符。
公共方法 靜態成員 受 Silverlight for Windows Phone 支持 受 Xbox 360 支持 Join(String, String[]) 在指定 String 數組的每個元素之間連接指定的分隔符 String,從而產生單個連接的字符串。
公共方法 靜態成員 受 Silverlight for Windows Phone 支持 受 Xbox 360 支持 Join(String, String[], Int32, Int32) 在指定 String 數組的每個元素之間連接指定的分隔符 String,從而產生單個連接的字符串。 參數指定要使用的第一個數組元素和元素數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM