我有一个问题,本来应该很简单,但我找不到任何优雅的答案。
我有一个 IList<string>
实例,并且想要获取其所有不同(忽略大小写)值的逗号分隔字符串。
我以为可以使用 string.Join
辅助方法,因为它有一个很好的重载,接受一个 IEnumerator<string>
作为参数。不幸的是,我遇到了一个问题:spring4d 重新定义了 IEnumerator<T>
,当然,在任何地方都使用自己的类型。
结果是以下代码无法编译:
var
distinct: system.IEnumerator<string>;
begin
result := inherited GetToken;
if assigned(result) then
begin
if not Modules.Contains(STR_DID_SESSION_MODULE) then
Modules.Add(STR_DID_SESSION_MODULE);
distinct := TDistinctIterator<string>.Create(Modules, TIStringComparer.Ordinal);
result.CustomClaims.Items[STR_CLAIM_CUSTOM_MODULES] := string.Join(',', distinct);
end;
end;
对distinct
的赋值失败,错误信息为E2010 不兼容类型:'System.IEnumerator<System.string>' 和 'Spring.Collections.Extensions.TDistinctIterator<System.string>'
或者,如果我从distinct中删除命名空间,则调用string.Join
会失败。
你有任何想法应该怎么做吗?除了手动遍历迭代并手动执行连接之外?