从List <object>枚举初始化List <int>

时间:2018-03-29 22:57:21

标签: c#

是否可以初始化Listint(基元/值类型),其枚举值为List objects包含所需的records整数属性?

我有一个List<Record>RecordId's的列表,其中包含List<int>

是否可以按以下方式初始化这些RecordId's List<Record> records; List<int> recordIds = new List<int> { records.GetEnumerator().Current.RecordId };

figsize=(3+i/3,2+i/4)

3 个答案:

答案 0 :(得分:3)

其中任何一个都应该有用。

List<int> recordIds = new List<int>(records.Select(e => e.RecordId));

List<int> recordIds = records.Select(e => e.RecordId).ToList();

在封面下,这些实际上是相同的,所以我会使用你认为最具可读性的那些。

答案 1 :(得分:2)

另一种解决方案是:

List<int> recordIds = new List<int>(records.Count);
foreach(var record in records)
      recordIds.Add(record.RecordId);

或使用查询语法:

IEnumerable<int> recordIds = 
         from record in records
         select record.RecordId;

答案 2 :(得分:1)

首先,编写一个接受record的函数并生成所需的整数。

public int GetID(Record r)
{
    return r.RecordId; 
}

您也可以写为lambda

r => r.RecordId;

然后将该函数传递给LINQ的Select方法:

//using System.Linq;
var result = records.Select(GetID);

请注意,GetID已通过,而不是GetID()。您希望传递对函数的引用,而不是函数的结果。

你也可以传递lambda,这是一种更常见的方法:

var result = records.Select( r => r.RecordId );

如果您想最终得到一个列表,只需将ToList()添加到最后。

var result = record.Select( r => r.RecordId ).ToList();