12

将多值 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

4

4 回答 4

9

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

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

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

只要multiTextField.Values实现 IList。

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

这里有一个很好的讨论关于列表上的字符串连接 (.Net 4)
或这里尝试字符串。加入 IList (.Net 4)
从 IList (.Net 3.5) 创建逗号分隔列表

于 2012-05-15T12:34:35.267 回答
6

您可以使用 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))
于 2012-05-15T12:29:23.850 回答
4

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

@@(Component.multiValueField)@@
于 2012-05-15T14:02:04.143 回答
0

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

于 2012-05-15T12:28:22.367 回答