用逗号分隔 Tridion 多值字段的最快方法

Posted

技术标签:

【中文标题】用逗号分隔 Tridion 多值字段的最快方法【英文标题】:Quickest way to comma separate a Tridion multivalue field 【发布时间】:2012-05-22 22:41:08 【问题描述】:

将多值 Tridion 文本字段拆分为逗号分隔字符串的最快方法是什么? 就我而言,我使用的是 C#,但我想也欢迎任何其他示例。 这似乎是丑陋而漫长的道路:

var multiTextField = fields["multiTextField"] as TextField;
string multiCommaField = String.Empty;

for (int i = 0; i < multiTextField.Values.Count; i++)

    multiCommaField += multiTextField.Values[i].ToString() + ",";

编辑:我正在使用 .NET 3.5 和 Tridion 2009 SP1

【问题讨论】:

执行时间最快的方式,或最少的代码量 感谢@Hendrik 的更新-尝试我在答案中添加的链接 (***.com/questions/799446/…) 接受的答案涉及在执行联接之前将 IList 转换为数组。 【参考方案1】:

你试过multiTextField.Values.ToArray().Join(",")吗?

【讨论】:

对不起@peter-kjaer,ToArray 方法是您必须首先创建的 LINQ 方法。至少在这个链接中是这样的:***.com/questions/799446/… 我在官方文档中看到过,但没有时间实际试用。我的第一个想法是“加入”,所以我只是浏览了文档中的属性并发布了一个建议。【参考方案2】:

您可以使用 LINQ:

var multiTextField = fields["multiTextField"] as TextField;
string delimeter = ",";     
Console.WriteLine(multiTextField.Values.Aggregate((i, j) => i + delimeter + j))

或者用更短(更丑)的方式:

((TextField) fields["multiTextField"]).Values.Aggregate((i, j) => i + "," + j))

【讨论】:

此方法最短,似乎也更快。谢谢!【参考方案3】:

您尚未在问题中指定您的 Tridion 或 .Net 版本,但您可以使用几种不同的技术从文本字段中获取逗号分隔值。

如果您使用的是 .Net 4,我相信您可以这样做:

string.Join(",", multiTextField.Values);

只要 multiTextField.Values 实现 IList。

如果您使用.Net 3.5 或更早版本,我相信string.Join() 函数需要一个数组而不是IList

在String Join on a List (.Net 4) 或Trying to string.Join an IList (.Net 4) 或Creating a comma separated list from IList (.Net 3.5)

进行了很好的讨论

【讨论】:

不幸的是,在 3.5 中,漂亮而干净的 .NET 4 方法尚不可用。我检查了其他链接,但那里的解决方案不会使脚本变得更小。 user978511 的回答简短而迅速。 很公平 - 很高兴它对你有用。与稍长的方法相比,我发现对于简单的事情 LINQ 可能很难阅读和支持,但如果有性能改进,那么我会同意你接受的答案。【参考方案4】:

评估表达式。多值文本字段已经是一个逗号分隔的字符串“under the water”,因此您可以像这样在 Dreamweaver 层中抓取它:

@@(Component.multiValueField)@@

【讨论】:

对于 Dreamweaver 模板,请记住这一点!谢谢多米尼克 您还可以在程序集 TBB 中计算表达式。

以上是关于用逗号分隔 Tridion 多值字段的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

TSQL 将列中的逗号分隔值与逗号分隔参数进行比较

c ++在std :: vector中存储逗号分隔的最快方法是啥

db2 将逗号分隔数据转换为多值IN列表

sql 如何以逗号为分隔符分割一个字段的值

mysql 字段内容是用逗号分隔的。怎么按序列查询内容

Redshift SQL 用 GROUP 逗号分隔字段