如何将多行合并为单个文本

本文关键字:单个 文本 合并 | 更新日期: 2023-09-27 18:00:10

我想将电话号码分组到相同的部分,如下所示:

section | phone
   1    | 1001
   1    | 1002
   2    | 1201
   2    | 1202

并将它们分组如下:

section | phone
   1    | 1001, 1002
   2    | 1201, 1202

但我不知道用什么语法来摸索它们。

这个代码我做

var entgr = (from fx in MainOnline.MA_TelUsers
             where fx.TE_SectionID != null
             group fx by fx.TE_SectionID into id
             from ids in id.DefaultIfEmpty()
             select new 
             { 
                  Section = ids.TE_SectionID,
                  TelPhone = ids.TE_Phone                                         
             });

我如何将其分组并使用它连接其他表?

如何将多行合并为单个文本

var entgr = (from fx in ph
                         group fx by fx.SectionId.ToString() into id
                         select new
                         {
                             Section = id.Key,
                             TelPhone = string.Join(", ",id.Select(s => s.PhoneNumber.ToString()))
                         });

尝试此查询

var entgr = (from fx in MainOnline.MA_TelUsers
                 where fx.TE_SectionID != null
                 group fx by fx.TE_SectionID into ids
                           select new
                           {
 Section = ids.TE_SectionID,
                      TelPhone =ids.Aggregate((a, b) => 
                                       new {TelPhone = (a.TelPhone + ", " + b.TelPhone ) }).TelPhone 
                           });

https://msdn.microsoft.com/en-us/library/vstudio/bb397696.aspx

请参阅此链接。如果你想在单个linq查询中完成它,那么我希望这是不可能的。

但在评估时,你可以这样做

var ph = new List<Phone>();
            ph.Add(new Phone() { SectionId = 1, PhoneNumber = 1001 });
            ph.Add(new Phone() { SectionId = 1, PhoneNumber = 1002 });
            ph.Add(new Phone() { SectionId = 2, PhoneNumber = 1201 });
            ph.Add(new Phone() { SectionId = 2, PhoneNumber = 1202 });
            var results = ph.GroupBy(i => i.SectionId).Select(i=> new {i.Key, i});
            foreach (var phone in results)
            {
                int section = phone.Key;
                string phoneNos = string.Join(",",phone.i.Select(i=>i.PhoneNumber));
            }