尝试比较日期

时间:2017-02-10 16:19:10

标签: c# linq datetime

我有以下内容:

return db.Events
            .Where(e => 
                e.BedId == bed 
                && e.Date.Year == date.Year 
                && e.Date.Month == date.Month
                && e.Date.Day == date.Day)
            .Select(x => new EventViewModel() { 
                Id          = x.Id,
                Date        = x.Date.Date.ToString(),
                StartTime   = x.StartTime.ToString(),
                EndTime     = x.EndTime.ToString(),
                Planned     = x.Planned,
                EngineSN    = x.EngineSN,
                Details     = x.Details,
                Bed         = x.Bed.Name,
                Category    = x.Subcategory.Category.Name,
                Subcategory = x.Subcategory.Name,
                Project     = x.Project.Name,
                Type        = x.Type.ToString()
            })
            .ToList();

它抱怨member 'date' is not supported by LINQ

我知道LINQ不能使用日期,因为它没有如何阅读和比较它们的概念。这就是我特意要求它比较Year MonthDay属性(都是int s)的原因。我的查询中有什么抛出此异常?

P.S。 EventViewModel.DateString

3 个答案:

答案 0 :(得分:1)

您需要更改查询,这样您就不会在DateTime上调用Date属性并更改视图模型。

将您定义为字符串的DateTime属性定义为DateTime。 像这样注释DateTime属性

public class ArtistResponse
{
    public Nullable<int> ArtistId { get; set; }
    public string Name { get; set; }
}

或您在UI中使用的任何日期格式。

像这样更改您的查询

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Date{ get; set; } 

答案 1 :(得分:0)

您尝试做的事情似乎是在比较和投影中排除日期的时间部分。如果是这种情况,请使用DbFunctions。

<div class="mobile-links">
      <div id="dropdown" onclick="myFunction()">
        <button class="dropbtn">
        <span><img src="http://www.smockedoverstocks.net/skin/frontend/lee/default/images/hamburger-menu.png"/></span></button>
        <div class="dropdown-content">
          <div class="quick-access five columns omega">
          content
          </div>
        </div>
      </div>
</div>

然后

.Where(DbFunctions.TruncateTime(e.Date == date))

答案 2 :(得分:0)

LINQ与其他人提到的Dates合作。这是你的SELECT在x.Date.Date.ToString()

抱怨