CLR SqlUserDefinedAggregate 多次连接不同的值 运行

CLR SqlUserDefinedAggregate concat on distinct values run multiple times

我是 运行 CLR c#,用于连接从在线和此处定义的书籍中的类似示例中获取的值: https://dotnetfiddle.net/aKOC5Q 我用

来称呼它
 SELECT unit,dbo.concat(COUNTRY,',') FROM dbo.COUNTRIES GROUP BY unit

在 C# 代码中,您可以看到我正在使用 Distinct(),因为我不想重复。 这里的问题是,显然这个 CLR 被调用了多次,因此我按照示例得到了重复的结果:

 PalestinePalestine,IsraelPalestine,Israel,Spain

根据 c# 逻辑,这不应该发生,但是正如您所见,值之间缺少的逗号让我明白 CLR 被多次调用(除了 MERGE),因此我得到了重复的结果.

有趣的是,如果在 c# fiddle 的第 40 行我写:

AccumulatorList.Add("test");

我正确地得到了一个结果 "test"。

你知道为什么会出现这个问题吗?我怎样才能摆脱它并获得不同的值?

显然我在嗅探并发问题和 运行 使用 MAXDOP 1 选项的相同查询方面是正确的

 SELECT unit,dbo.concat(COUNTRY,',') FROM dbo.COUNTRIES GROUP BY unit OPTION(MAXDOP 1)

解决问题