使用 Linq 从数字列表创建类列表 [重复]

Posted

技术标签:

【中文标题】使用 Linq 从数字列表创建类列表 [重复]【英文标题】:Create list of class from list of numbers using Linq [duplicate] 【发布时间】:2019-11-01 06:16:00 【问题描述】:

我有一个数字列表:

List<Int32> numbers = new List<Int32>  1, 2, 5, 6, 18, 28, 40, 62 ;

还有以下类:

public class Measure 
  public DateTime Created  get; set; 
  public Int32 Value  get; set; 

我需要创建一个 Measure 列表,其中:

    每个测量值都是列出的值之一; 创建的每个度量都是从 DateTime.Now 开始的一天,并以一天为增量。

所以 Measure 列表应该是这样的:

DateTime.Now, 1
DateTime.Now.AddDays(1), 2
DateTime.Now.AddDays(2), 5
...

是否可以使用 Linq 创建此列表?

【问题讨论】:

numbers.Select((x, i) =&gt; new Measure Value = x, Created = DateTime.Now.AddDays(i) ) 【参考方案1】:

让我们试试Select((value, index) => ...)构造:

 List<Int32> numbers = new List<Int32>  1, 2, 5, 6, 18, 28, 40, 62 ;

 List<Measure> result = numbers
   .Select((value, index) => new Measure() 
      Created = DateTime.Now.AddDays(index),
      Value = value
     )
   .ToList();

【讨论】:

【参考方案2】:

是的,你可以:

List<Int32> numbers = new List<Int32>  1, 2, 5, 6, 18, 28, 40, 62 ;
int dayCounter = 0;
var measureList = numbers.Select(
    x => new Measure
    
        Value = x,
        Created = DateTime.Now.AddDays(dayCounter++)
    ).ToList();

【讨论】:

以上是关于使用 Linq 从数字列表创建类列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 LINQ 选择单个列表的所有唯一组合,不重复

从列表LINQ中提取列表[重复]

使用 LINQ 遍历列表并设置已创建的变量 [重复]

如何使用 LINQ 从列表中获取重复项? [复制]

如何使用LINQ从列表中获取重复项?

从列表中删除相邻的重复元素[重复]