在" 我如何仅公开IList的片段<>问题"中,其中一个答案包含以下代码段:
IEnumerable<object> FilteredList()
{
foreach(object item in FullList)
{
if(IsItemInPartialList(item))
yield return item;
}
}
Run Code Online (Sandbox Code Playgroud)
yield关键字有什么作用?我已经看到它在几个地方被引用,另外一个问题,但我还没弄清楚它实际上做了什么.我习惯于在一个线程产生另一个线程的意义上考虑收益率,但这似乎并不重要.
如果不使用一些可怕的循环/计数器类型解决方案,我甚至不确定如何做到这一点.这是问题所在:
我有两个日期,开始日期和结束日期,在指定的时间间隔内我需要采取一些行动.例如:对于2009年10月3日之间的每个日期,每隔三天至2009年3月26日,我需要在列表中创建一个条目.所以我的意见是:
DateTime StartDate = "3/10/2009";
DateTime EndDate = "3/26/2009";
int DayInterval = 3;
Run Code Online (Sandbox Code Playgroud)
我的输出将是一个具有以下日期的列表:
2009年3月13日3/16/2009 3/19/2009 3/22/2009 3/25/2009
那么我怎么会这样做呢?我想过使用一个for循环,它会在范围内的每一天之间迭代,使用一个单独的计数器,如下所示:
int count = 0;
for(int i = 0; i < n; i++)
{
count++;
if(count >= DayInterval)
{
//take action
count = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎可能有更好的方法?
我想从时间范围创建一个每小时对象列表。
c# 中有没有像 python pandas.timerange 这样的函数?
pandas.time_range("11:00", "21:30", freq="30min")
Run Code Online (Sandbox Code Playgroud) 是否有任何帮助方法在C#中生成日期?
例如,我有一个网格显示日期,给定两个日期之间所有日期的日期..如果我选择2013年1月1日至2013年2月5日...它应该生成这两个之间的所有日期...
我尝试了While Loop如下
while (startdate <= enddate)
{
var calendarDate = CreateDate();
calendarDate.CalendarDate = startdate.Date;
if (calendarDate.DayofWeek == DayOfWeekValues.Sunday.Value)
{
calendarDate.IsHoliday = true;
}
startdate = startdate.AddDays(1.0);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试用没有销售的缺失日期填充我的列表......
我定义了一个这样的类:
public class GroupedItem
{
public DateTime _Date { get; set; }
public int Sales { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在列表填充如下:
var LineGraph = _groupedItems
.GroupBy(l => l._Date.Date)
.Select(cl => new GroupedItem
{
_Date = cl.Key,
Sales = cl.Sum(c=>c.Sales)
})
.OrderBy(x => x._Date)
.Where(t => t._Date <= DateTime.Now &&
t._Date >= DateTime.Now.Subtract(TimeSpan.FromDays(date_range)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
我得到的输出如下:
11th December 6 sales
13th December 8 sales
18th December 12 sales
19th December 25 sales
Run Code Online (Sandbox Code Playgroud)
这相当不错,但我想添加第一个日期和最后一个日期之间缺少的日期,以便我可以得到如下输出:
11th December 6 sales
12th December 0 sales …Run Code Online (Sandbox Code Playgroud) 我有一个开始和结束日期,我想获得这两个日期(包括两者)之间所有日期的列表.我可以使用一个循环向开始日期添加1天,然后将该日期添加到列表中.就像是:
DateTime end = DateTime.Now;
DateTime start = end.AddDays(-30);
DateTime current = start;
List<DateTime> result = new List<DateTime>();
while (currrent <= end)
{
result.Add(current);
current = current.AddDays(1);
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个整洁的LINQ表达式.有任何想法吗?