使用LINQ表达式从IEOumerable POCO中检索IEnumerable属性

jcv*_*dan 7 c# linq

我试图使用LINQ迭代一个IEnumerable对象,并将每个对象的某个属性拉出到该属性类型的IEnumerable中.

我目前正在使用SelectMany LINQ表达式,但不是返回IEnumerable<string>我想要的(因为属性是一个字符串),它返回一个IEnumerable<char>

var propertyValues = objectCollection.SelectMany(o => o.Value);
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Ben*_*son 8

如果它正在返回IEnumerable<char>那么那就是它.猜测你想要使用Select()而不是SelectMany(),我猜它会把一堆字符串弄平IEnumerable<char>.如果您可以发布更多代码,以显示objectCollection我们可以提供更多帮助的内容.

编辑

更多代码来说明我的观点

List<string> stringList = new List<string>();
stringList.Add("string1");
stringList.Add("string2");
IEnumerable<char> chars = stringList.SelectMany(x => x);
Run Code Online (Sandbox Code Playgroud)

  • @dormisher:是的:`string`实现了`IEnumerable <char>`. (2认同)

Jon*_*eet 5

你想要Select而不是SelectMany.SelectMany将使一系列序列变平.您基本上是投射到一系列字符串 - 字符串是一系列字符,因此Selectmany将字符串序列展平为单个字符序列.

尝试:

var propertyValues = objectCollection.Select(o => o.Value);
Run Code Online (Sandbox Code Playgroud)