两个日期时间戳都将日期和时间字段合并为一个

时间:2017-12-19 23:31:17

标签: c# entity-framework linq

我正在尝试组合表的日期和时间部分,以便我可以正确设置约会我想知道是否有人可以帮助我我的语法没有被编译

 public List<Appointment> getAppointments (DateTime AppointmentDate)
 {
    List<Appointment> query = _sourceEntities.Appointments.Where(a => a.ApptDate == AppointmentDate && a.ClientID==6).ToList();
    return _sourceEntities.Appointments.Select(r =>

    {
            var newAppointment = new Appointment();
            DateTime date = new DateTime(r.ApptDate.Year, r.ApptDate.Month, r.ApptDate.Day, r.ApptTime.Hour, r.ApptTime.Minute, r.ApptTime.Second);
            newAppointment.ApptDate = date;
            return newAppointment();


    });

}

这里的错误是hapening返回newAppointment();我不确定为什么它说方法名称预期我想要旧列表的所有字段,但也有这个新的组合日期时间字段。

以下是最佳解释数据的示例

https://i.imgur.com/rCtx0lt.png

修改2

_sourceEntites在课程顶部是十分重写的

public class SourceContext 
{
     public  SMBASchedulerEntities _sourceEntities = new SMBASchedulerEntities();
     public static List<Appointment> getAppointments(DateTime apptDate)
     List<Appointment> query = _sourceEntities.Appointments.Where(a => a.ApptDate == AppointmentDate && a.ClientID==6).ToList();
     return _sourceEntities.Appointments.Select(r =>

    {
            var newAppointment = new Appointment();
            DateTime date = new DateTime(r.ApptDate.Year, r.ApptDate.Month, r.ApptDate.Day, r.ApptTime.Hour, r.ApptTime.Minute, r.ApptTime.Second);
            newAppointment.ApptDate = date;
            return newAppointment();


    });
}

2 个答案:

答案 0 :(得分:0)

newAppointment是一个对象变量,通过使用(编译器将newAppointment视为一种方法,这就是错误消息所说的。删除('s应解决问题。

返回结果的另一种方法是

public List<Appointment> getAppointments (DateTime AppointmentDate)
 {
    List<Appointment> query = _sourceEntities.Appointments.Where(a => a.ApptDate == AppointmentDate && a.ClientID==6).ToList();
    return _sourceEntities.Appointments.Select(r => new Appointment

    {
            newAppointment.ApptDate = ew DateTime(r.ApptDate.Year, r.ApptDate.Month, r.ApptDate.Day, r.ApptTime.Hour, r.ApptTime.Minute, r.ApptTime.Second);
            //map other variables here
    });

}

答案 1 :(得分:0)

您的代码存在问题:return newAppointment();。当您在其后面添加括号时,您正在将对象newAppointment视为一种方法。相反,你可以这样做:

return newAppointment;

稍微简单的方法是在Appointment语句中创建新的Select。这将返回IEnumerable AppointmentToList()个对象,我们可以在返回之前调用.Where()。我还添加了一个query子句,以匹配您public static List<Appointment> getAppointments(DateTime apptDate) { return _sourceEntities.Appointments .Where(a => a.ApptDate == apptDate && a.ClientID == 6) // Remove if not needed .Select(r => new Appointment { ApptDate = new DateTime(r.ApptDate.Year, r.ApptDate.Month, r.ApptDate.Day, r.ApptTime.Hour, r.ApptTime.Minute, r.ApptTime.Second) }) .ToList(); } 中的内容。如果不需要,您可以删除该行。

Date

另外需要注意的是,您正在对两个日期对象进行相等比较,因此您只能获得传入参数的确切日期和时间的约会。以防万一如果您希望获得一天的所有约会,您可以使用DateTime对象的// Compare the Date portion of the argument to get all appointments for that day .Where(a => a.ApptDate.Date == appointment.Date && a.ClientID == 6) 部分进行比较:

ri_startDate > 2017-12-3
ri_endDate > 2018-3-4