C# 如何从对象列表中获取一个属性的数组?

C# 如何从对象列表中获取一个属性的数组?,c#,C#,我有一张物品清单 List<Flywheel> parts1 = new List<Flywheel>(); List parts1=新列表(); 我想提取其中一个属性的数组 parts1 = parts.DistinctBy(Flywheel => Flywheel.FW_DMF_or_Solid).OrderBy(Flywheel => Flywheel.FW_DMF_or_Solid).ToList(); string[] mydata = (

我有一张物品清单

List<Flywheel> parts1 = new List<Flywheel>();
List parts1=新列表();
我想提取其中一个属性的数组

 parts1 = parts.DistinctBy(Flywheel => Flywheel.FW_DMF_or_Solid).OrderBy(Flywheel => Flywheel.FW_DMF_or_Solid).ToList();

 string[] mydata = ((IEnumerable)parts1).Cast<Flywheel>()
                              .Select(x => x.ToString())
                              .ToArray();
parts1=parts.DistinctBy(飞轮=>飞轮.FW_-DMF_或_-Solid)。订购人(飞轮=>飞轮.FW_-DMF_或_-Solid)。ToList();
字符串[]mydata=((IEnumerable)parts1).Cast()
.Select(x=>x.ToString())
.ToArray();
DistinctBy()的代码

公共静态IEnumerable DistinctBy(此IEnumerable源,Func键选择器)
{
HashSet seenKeys=新HashSet();
foreach(源中的TSource元素)
{
if(seenKeys.Add(键选择器(元素)))
{
收益-收益要素;
}
}
}
我在代码中得到的是一个字符串数组,每个字符串都是“XXX.Flywheels.飞轮” 但我需要得到实际值。

这应该可以:

List<Flywheel> parts1 = new List<Flywheel>();
var mydata = parts1.Select(x => x.FW_DMF_or_Solid).OrderBy(x => x).Distinct().ToArray();
List parts1=新列表();
var mydata=parts1.Select(x=>x.FW\u DMF\u或_Solid).OrderBy(x=>x.Distinct().ToArray();
您的
ToString()
操作员正在输出“XXX.飞轮.飞轮”。你需要

string[] mydata = ((IEnumerable)parts1).Cast<Flywheel>()
                          .Select(x => x.FW_DMF_or_Solid.ToString())
                          .ToArray();

您正在执行
Select
操作之后的
OrderBy
操作。我认为这不会被编译。好的观点@RobLyndon,我的意思是按商品本身订购。。。代码已更新。
string[] arrayOfSingleProperty = 
         listOfObjects
        .Select(o => o.FW_DMF_or_Solid)
        .OrderBy(o =>o)
        .Distinct()
        .ToArray();
string[] mydata = ((IEnumerable)parts1).Cast<Flywheel>()
                          .Select(x => x.FW_DMF_or_Solid.ToString())
                          .ToArray();
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
    return source.GroupBy(x => keySelector(x)).Select(g => g.First());
}