【问题标题】: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]从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]
【发布时间】: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

标签: c# class generic-list


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多