将对象列表转换为对象属性数组

16 浏览
0 Comments

将对象列表转换为对象属性数组

假设我有以下类:\n

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

\n然后我创建了一个包含这些类的列表 (List MyList)\n现在我有一个具有以下签名的方法:\n

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

\n如何将MyList适配到listGoesHere,并使用ConfigItemType.Name中的值作为参数字符串数组?\n我相当肯定 LINQ 可以做到这一点... 但是MyList上没有select方法(这是我本来会用到的)。

0
0 Comments

问题的出现原因:

在这段代码中,我们想要将一个对象列表转换为其中一个对象属性的数组。然而,直接使用ConvertAll方法将对象列表转换为目标属性的数组时,可能会遇到一些问题。

解决方法:

为了解决这个问题,我们可以使用AggregateValues方法来实现转换。在这个方法中,我们可以使用Lambda表达式来指定要转换的属性。然后,我们可以使用ToArray方法将转换后的结果转换为数组。

下面是解决问题的代码示例:

AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())

通过这种方法,我们可以轻松地将对象列表转换为其中一个对象属性的数组。这样,我们就能够更方便地处理和操作这些数据。

0
0 Comments

问题的出现原因是作者想将一个对象列表转换为该对象的一个属性的数组,但是作者不清楚如何使用LINQ来完成这个操作。作者尝试使用了select方法,但是发现MyList对象上没有该方法。

解决方法是使用LINQ的Select方法来选择对象列表中的指定属性,并使用ToArray方法将结果转换为数组。具体代码如下:

MyList.Select(x => x.Name).ToArray();

作者提到可能出现的问题是没有引用System.Core命名空间,或者没有使用System.Linq命名空间的using指令。

0
0 Comments

问题的原因是在代码中使用了LINQ的Select方法来将对象列表转换为对象的属性数组,但是在代码中没有引入System.Linq命名空间,导致Select方法无法显示在Intellisense中。

解决方法是在代码文件中添加using System.Linq语句来引入System.Linq命名空间,然后Select方法就会显示在Intellisense中。

具体的解决步骤如下:

1. 在代码文件中添加using System.Linq语句。

2. 使用Select方法将对象列表转换为对象的属性数组,例如MyList.Select(x=>x.Name)。

3. 使用ToArray方法将转换后的属性列表转换为数组,例如MyList.Select(x=>x.Name).ToArray()。

如果遇到Select方法无法显示在Intellisense中的情况,那可能是因为没有添加System.Linq命名空间。可以尝试使用using System.Data.Linq语句,并按照BrokenGlass的回答进行操作。

在这个问题中,有用户使用了Select方法来获取对象列表中的属性,例如List somestringlist = myobjectlist.Select(x => x.id).ToList(),并且表示这是一个很好的解决方法。

最后,原问题的提问者意识到自己遗漏了引入LINQ的命名空间,才导致了Select方法无法显示在Intellisense中的问题,并感谢其他用户帮助他找到解决方法。

0