SelectMany 函数出了什么问题?

12 浏览
0 Comments

SelectMany 函数出了什么问题?

这个问题已经有了答案

Select和SelectMany之间的区别

我遇到了一个使用SelectMany表达式的问题,我无法理解。

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

class Tag
{
    string DisplayText { get; set; }
    string Key { get; set; }
    int Value { get; set; }
}

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

var texts = AvailableTags.SelectMany(t => t.DisplayText);

现在为什么这会返回一个IEnumerable而不是IEnumerable?难道我漏掉了什么吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

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

var texts = AvailableTags.Select(t => t.DisplayText);

你使用SelectMany得到的“奇怪”结果是由于(正如@derloopkat所说的那样)一个字符串是一个字符的集合。
因此你可以把你的代码想象成这样:

class Tag
{
    List DisplayText { get; set; }
    string Key { get; set; }
    int Value { get; set; }
}

当你使用SelectMany时,你得到的是每个DisplayText中包含的所有字符,然后将结果压平。

0