如何解决SQL Server STRING_AGG() :等效于 Linq
这是我的桌子 tbl_emp
:
这是我需要的结果:
在 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; }
}
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。