我遇到了一个SelectMany表达式的问题,我只是束手无策。
考虑一下:我有一个此类的对象集合
class Tag
{
string DisplayText { get; set; }
string Key { get; set; }
int Value { get; set; }
}
现在,我正在尝试获取所有显示文本(实际上是更复杂的表达式的一部分):
var texts = AvailableTags.SelectMany(t => t.DisplayText);
现在为什么这会给我一个IEnumerable<char>
而不是一个IEnumerable<string>
的信息???我想念什么吗?
答案 0 :(得分:5)
如果AvailableTags
是一个列表(一个IEnumerable),则您只需使用
var texts = AvailableTags.Select(t => t.DisplayText);
使用SelectMany
产生的“奇怪”结果是由于字符串完全是char的集合(完全来自@derloopkat)。
因此,您可以想象这样的代码:
class Tag
{
List<char> DisplayText { get; set; }
string Key { get; set; }
int Value { get; set; }
}
使用SelectMany
时,您将获取每个DisplayText
中包含的所有字符,然后将结果展平。