问题: 需要模拟一个集合 里面是设备号和每日的日期
代码如下:
csharp
static void Main(string[] args)
{
string equipmentCodePar = "";
DateTime time = DateTime.Now; // 获取当前时间
DateTime startDate = time.AddDays(1 - time.Day);//获取当前月第一天
DateTime endDate = startDate.AddMonths(1).AddDays(-1); // 例:2023年1月31日
List<string> Sclist = new List<string>() { "S01", "S02", "S03", "S04", "S05", "S06", "S07", "S08", "S09" };
if (!string.IsNullOrEmpty(equipmentCodePar)) Sclist = Sclist.Where(p => p.Contains(equipmentCodePar)).ToList();
//
var equipmentDateCombinations =
from equipmentCode in Sclist.Select(info => info)
from date in Enumerable.Range(0, (endDate - startDate).Days + 1).Select(offset => startDate.AddDays(offset))
select new { EquipmentCode = equipmentCode, Date = date.Date };
Console.WriteLine("day"+(endDate - startDate).Days);
foreach (var i in Enumerable.Range(0, (endDate - startDate).Days + 1))
{
Console.WriteLine(i);
}
Console.WriteLine();
}
主要使用了
Enumerable.Range(0, (endDate - startDate).Days + 1).Select(offset => startDate.AddDays(offset))
在微软的官方文档中 Enumerable.Range
csharp
// Generate a sequence of integers from 1 to 10
// and then select their squares.
IEnumerable<int> squares = Enumerable.Range(1, 10).Select(x => x * x);
foreach (int num in squares)
{
Console.WriteLine(num);
}
/*
This code produces the following output:
1
4
9
16
25
36
49
64
81
100
*/