【发布时间】:2019-04-15 15:19:44
【问题描述】:
我正在尝试列出具有特定日期并分配给特定人员的项目,但由于某种原因,它似乎没有按日期过滤列表。目的是遍历组中的每个人,并找出他们在该日期之前的任务。
我已经尝试过 Contains 和 any ,但这并没有真正给我想要的结果。 'Var i' 的输出似乎只是一个包含各种日期的所有项目的列表。
foreach (String consultant in recipent)
{
var q = appointmentItems.Where(item => item.Name==consultant);
ws.Cell(row, col).Value = consultant;
col++;
foreach (DateTime date in time)
{
Console.WriteLine(date.ToShortDateString());
var i = q.Where(item => item.Date == date.ToShortDateString());
loggedTime = 0m;
//dailyHours = 7.5m;
availableHours = 7.5m;
String name = "";
String _date = date.ToShortDateString();
foreach (CalenderItem item in i)
{
//populate values and workout availibile hours
}
}
}
日历项目类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Outlook;
namespace ConsoleApplication1
{
class CalendarItem
{
public String Date { get; set; }
public decimal Duration { get; set; }
public string Name { get; set; }
public string Subject { get; set; }
public bool AllDayEvent{ get; set; }
public string Category { get; set; }
public string BusyStatus { get; set; }
public string Location { get; set; }
}
}
第一个 linq 'Q' 可以很好地生成与 1 个人相关的项目列表。第二个 linq 'i' 什么都不做,并返回与 'Q' 相同的列表。
【问题讨论】:
-
您需要发布更多代码。例如,
time来自哪里。尽可能包含一个最小的工作示例。 -
item.Date 是一个日期?您正在将日期与字符串进行比较。条件永远不会为真,因此列表将始终为空。
-
item.Date.ToShortDateString() == date.ToShortDateString(),当你尝试这样做时会发生什么? TBH,您应该将Date与Date类型进行比较... -
不知道为什么我之前的评论被删除了,但是请分享一下Item类型上的Date属性的定义。
-
对不起@JonasHøgh,项目是日历项目类型,我已经将其转换为字符串类型