c# - 在 linq to sql 查询中聚合或连接字符串 (SQL Server)

标签 c# vb.net linq-to-sql aggregate

给定一个表格

ID | Name | City
1  | X    | Y
2  | Z    | Y
3  | W    | K

我想产生这样的结果

ID | Description
1  | Y (X, Z)
3  | K (W)

我试过类似的东西

From C In Clients Group C By C.ID, C.City _
Into G = Group Select New With {.ID = ID, .Description = City & _
" (" & (From C In Clients Select C.Name).Aggregate(Function(X, Y) X & ", " & Y) & ")"}

这给了我一个错误“不支持查询运算符‘聚合’。” 也试过

From C In Clients Group C By C.ID, C.City _
Into G = Group Select New With {.ID = ID, .Description = City & _
" (" & String.Join((From C In Clients Select C.Name).ToArray, ", ") & ")"}

这给了我错误“没有支持的 SQL 翻译”

那么,我该怎么做呢?

最佳答案

我用 C# 破解了它,它似乎可以满足您的需求。我会将 VB 的翻译留给您。

var clients = from c in context.Clients 
              group c by c.City into cities 
              select new {
                  ID = cities.First().ID,
                  City = cities.Key, 
                  Names = string.Join(",", (from n in cities select n.Name).ToArray()) 
              };

foreach (var c in clients) {
    Console.WriteLine(string.Format("{0}| {1} ({2})", c.ID, c.City, c.Names));
}

关于c# - 在 linq to sql 查询中聚合或连接字符串 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427104/

相关文章:

c# - Linq - 从另一个列表中删除一个匿名列表

c# - linq-to-sql中的右外连接

sql-server - LINQ To SQL 表示读取器关闭时调用 Read 的尝试无效

c# - 我应该返回什么结果?

vb.net - 在 Exchange 服务器上验证电子邮件地址

.net - WPF 中 Calendar 和 Datepicker 控件之间的区别?

asp.net - 如何用今天的日期 VB.Net 填充文本框类型的日期

c# - 使用多个并行查询时的性能问题 - SqlClient

c# - WCF 服务测试

c# - 获取下拉列表值时避免回发 c# asp