从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]

Posted

技术标签:

【中文标题】从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]【英文标题】:Method to return a List<T> from a List<OwnStruct>, where List<T> then contains only one Property of all OwnStructs in List (C#) [duplicate] 【发布时间】:2021-10-07 08:39:11 【问题描述】:

我有点挣扎。 我的程序中有一个List&lt;HeadStruc_Table&gt;

类 HeadStruct 如下所示:

public partial class HeadStruct_Table : IComparable<HeadStruct_Table>
    
        public string colName  get; set; 
        public string colName_edit  get; set; 
        public string alternativeNames  get; set; 
        public int Table_ID  get; set; 
        public bool colFound  get; set; 
        public CheckBox cBox  get; set; 

我不知道如何使用 parameters (List&lt;HeadStruct_Table&gt;, HeadStruct_Table.colName) 创建一个方法,然后 returns 一个 List&lt;TypeOf(HeadStruct_Table.colName)&gt; 在这种特定情况下只包含 colName 的值。 当然,它也适用于 bool 甚至 CheckBox 属性。

由于参数 HeadStruct_Table.colName 现在不起作用,因为它被声明为 public 而不是 public static ,我必须将其声明为 public static 还是有任何其他机会传递特定属性。也许通过使用谓词?

以后可能会是这样吗?

public static IList<T> getList<T>(List<HeadStruct_Table> list, Func<HeadStruct_Table, T> getType)
    
        var newList = new List<T>();

我只是不知道如何获取特殊属性,然后在方法中读出这些值。如果没有字符串,我不想使用字符串作为参数。

谁有想法?

这是我的第一个问题。我愿意接受任何建议来改进在这里提出问题。谢谢。

【问题讨论】:

你为什么不使用Select() ?你描述的方法是Select。它实际上接受Func&lt;Whatever,T&gt;。你已经可以写list.Select(t=&gt;t.colName).ToList() 这很快,也是我所需要的。非常感谢,我还真没找到那个方法。 @Envyy System.Linq 【参考方案1】:

LINQ 的 Enumerable.Select 方法已经可以满足您的需求:

var newList = list.Select(x => x.colName).ToList();

【讨论】:

以上是关于从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法从 List<List> 转换为 List<List<?>>

用XStream进行xml转java对象的问题

为啥我不能从 List<MyClass> 转换为 List<object>?

C# 从 List<List<int>> 中删除重复项

从 Enumerable.Range 或 List<int> 填充 List<dynamic>

java 实现每次从list中取5000条数据放入新list