2017-08-02 62 views
-2

以下代码行为我提供了包含所有时区的列表。仅选择Linq至XML的元素的前n个字符

List<string> _timeZones = xdoc.Descendants("TimeZone").Select(x => x.Value).ToList(); 

但是,在这个特定的列表中,我宁愿只有前11个字符。

有人知道如何在上面的Linq声明中包含这个吗?

非常感谢您的帮助,

乔伊

+3

只需添加'子串(0,11)'到价值的终结? – maccettura

+0

@maccettura List _hours = xdoc.Descendants(“Hour”)。Select(x => x.Value.Substring(0,11))。ToList();这给了我一个ArgumentOutOfRangeException。 –

+0

听起来像你有一些小于11个字符的值...所以先尝试填充? 'PadRight(11).SubString(0,11)' – maccettura

回答

0

您可以添加Substring但它限制长度:

List<string> _timeZones = xdoc.Descendants("TimeZone").Select(x => x.Value.Substring(0, Math.Min(11, x.Value.Length))).ToList(); 
+0

需要在select语句中添加额外的右括号,然后它像魅力一样工作。非常感谢你!! –

+0

抱歉,错字 - 我显然确实无法将代码输入SO框。 – NetMage