【问题标题】:Find all items in a list with specific date using Linq使用 Linq 查找具有特定日期的列表中的所有项目
【发布时间】: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,您应该将 DateDate 类型进行比较...
  • 不知道为什么我之前的评论被删除了,但是请分享一下Item类型上的Date属性的定义。
  • 对不起@JonasHøgh,项目是日历项目类型,我已经将其转换为字符串类型

标签: c# linq


【解决方案1】:
 item.Date == date.ToShortDateString()

看起来不太好

item.Date 似乎是一个日期,date.TOShortDateString() 是一个字符串。

不同类型,不同格式等

试着去做

 item.Date.ToShortDateString() == date.ToShortDateString()

【讨论】:

  • 如果 item.Date 是 DateTime,代码将无法编译,因为没有为字符串和 DateTime 定义相等运算符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多