SelectMany出了什么问题?

Dan*_*Dan 0 c# linq

我遇到了SelectMany表达式的一个问题,我无法解决这个问题.

考虑一下:我有这个类的对象的集合

class Tag
{
    string DisplayText { get; set; }
    string Key { get; set; }
    int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试获取所有显示文本(实际上是更复杂表达式的一部分):

var texts = AvailableTags.SelectMany(t => t.DisplayText);
Run Code Online (Sandbox Code Playgroud)

现在为什么这会给我一个IEnumerable<char>而不是一个IEnumerable<string>??? 我错过了什么吗?

Mar*_*rco 5

如果AvailableTags是一个列表(IEnumerable),那么你应该简单地使用

var texts = AvailableTags.Select(t => t.DisplayText);
Run Code Online (Sandbox Code Playgroud)

您使用的"奇怪"结果SelectMany是(与@derloopkat完全相同)到字符串是char的集合.
所以你可以想象你的代码是这样的:

class Tag
{
    List<char> DisplayText { get; set; }
    string Key { get; set; }
    int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当你使用时,SelectMany你会得到每个中包含的所有字符DisplayText,然后结果就会变平.