SelectMany 有啥问题? [复制]
Posted
技术标签:
【中文标题】SelectMany 有啥问题? [复制]【英文标题】:What's wrong with SelectMany? [duplicate]SelectMany 有什么问题? [复制] 【发布时间】:2019-04-11 10:02:42 【问题描述】:我遇到了一个与 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>
???我错过了什么吗?
【问题讨论】:
它返回IEnumerable<char>
,因为字符串是字符的集合
看看:***.com/questions/958949/…。特别是,在其中一个答案中搜索“list 'Fruits' contains 'apple'”
【参考方案1】:
如果AvailableTags
是一个列表(一个 IEnumerable),那么你应该简单地使用
var texts = AvailableTags.Select(t => t.DisplayText);
您使用SelectMany
得到的“奇怪”结果是由于(正如@derloopkat 所说)字符串是字符的集合这一事实。
所以你可以想象你的代码是这样的:
class Tag
List<char> DisplayText get; set;
string Key get; set;
int Value get; set;
当您使用 SelectMany
时,您将获得每个 DisplayText
中包含的所有字符,然后结果被展平。
【讨论】:
以上是关于SelectMany 有啥问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章