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

时间:2012-05-15 12:13:21

标签: .net-3.5 tridion tridion2009

将多值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 个答案:

答案 0 :(得分:9)

您的问题中未指定您的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)

进行了非常好的讨论

答案 1 :(得分: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))

答案 2 :(得分:4)

评估表达式。多值文本字段已经是“在水下”的逗号分隔字符串,因此您可以在Dreamweaver层中抓取它,如下所示:

@@(Component.multiValueField)@@

答案 3 :(得分:0)

您是否尝试过multiTextField.Values.ToArray().Join(",")