微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server STRING_AGG() :等效于 Linq

如何解决SQL Server STRING_AGG() :等效于 Linq

这是我的桌子 tbl_emp

enter image description here

这是我需要的结果:

enter image description here

sql Server 2017 中,我可以使用 STRING_AGG 来获得所需的结果:

SELECT 
    name,STRING_AGG(email,'') 'email',STRING_AGG(email2,'') 'email2'
FROM
    tbl_emp
GROUP BY 
    name

如何在 Linq 中获得相同的结果?任何帮助将不胜感激。

解决方法

有问题没有给出关于您正在使用的 ORM 的任何信息,所以我尝试在 linq to objects in c# 中展示这个案例的一个例子,而不是问题的完整解决方案

String_Agg 聚合函数采用一组值,并使用提供的分隔符将它们组合成一个字符串。在 LINQ (linq to objects) 中,您可以使用 Group By, 我认为这个例子可以帮助你:

class Program
    {
        static void Main(string[] args)
        {
            var emails = new List<EmailData>() { 
                new EmailData() {Name="Sam",Email="Email1" },new EmailData() {Name="Sam",Email="Email2" },new EmailData() {Name="Ted",Email="Email3" },Email="Email4" },Email="Email5" }
            };
            var grouping = emails.GroupBy(x => x.Name);
            foreach (var group in grouping)
            {
                Console.WriteLine(
                    $"{group.Key}: {string.Join(",",group.Select(x => x.Email))}");
            }
            Console.ReadKey();
        }
    }
    public class EmailData
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。