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

本文关键字:IEnumerable 检索 属性 POCO LINQ 表达式 使用 | 更新日期: 2023-09-27 17:56:15

我正在尝试使用 LINQ 迭代对象的 IEnumerable,并将每个对象的某个属性拉出到该属性类型的 IEnumerable 中。

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

var propertyValues = objectCollection.SelectMany(o => o.Value);

我错过了什么?

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

如果它返回一个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);

你想要Select而不是SelectManySelectMany展平序列序列。你基本上是投影到一个字符串序列 - 字符串是一个字符序列,所以Selectmany是将字符串序列平展为单个字符序列。

尝试:

var propertyValues = objectCollection.Select(o => o.Value);

使用 Select(o => o.Value) .SelectMany 平展集合,因此它会选择所有字符串Value属性,然后将每个属性平展为字符列表。