从 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<HeadStruc_Table>
。
类 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<HeadStruct_Table>, HeadStruct_Table.colName)
创建一个方法,然后 return
s 一个 List<TypeOf(HeadStruct_Table.colName)>
在这种特定情况下只包含 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<Whatever,T>
。你已经可以写list.Select(t=>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<?>>
为啥我不能从 List<MyClass> 转换为 List<object>?