将多值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
答案 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(",")
?