3
public class content
{
    public int Id { get; set; }
    public string name { get; set; }
    public DateTime date { get; set; }  
}


Id   name       date
1    content1   01/01/2013
2    content2   05/01/2013
3    content3   05/03/2013
4    content4   01/06/2013
5    content5   10/03/2012
6    content6   01/01/2012

我正在尝试,如果查询通过 '01/2013',查询应该返回内容 id 1,2 。有谁知道如何查询上述情况?

4

3 回答 3

12

看起来你应该能够做到:

// Type and property names changed to match .NET conventions
public IEnumerable<Content> GetContents(int year, int month)
{        
    return db.Contents // Or wherever you're getting data from
             .Where(c => c.Date.Year == year && c.Date.Month == month);
}

我已经将它们拆分yearmonth单独的参数,就像您描述它们的方式一样 - 如果您真的希望能够处理“01/2013”​​,您可能希望首先将'/'每个部分拆分并解析为整数。(或者,将其解析为特定格式的日期,然后从中获取年份和月份。)

编辑:请注意,除非您小心,否则将每个值格式化为字符串是没有意义的并且可能不正确。(例如,除非您明确指定区域性,否则如果您/在模式中使用,您将获得当前区域性的日期分隔符,这很可能不是您所期望的。)

您实际上并没有尝试匹配字符串模式 - 您正在尝试测试日期的年份和月份。这就是上面的代码清楚地表达的内容。字符串格式无关紧要。

于 2013-05-08T13:41:30.277 回答
2

这仅适用于月份和年份

 List<eTransaction> lsttrans = db.eTransactions.Where(c => c.SchemeID == scid && 
    c.DateOfPay.Value.Month == month && c.DateOfPay.Value.Year == year).ToList();
于 2013-07-05T12:38:59.677 回答
0

我突然像下面这样工作:

public IEnumerable<Content> GetContents(string date) /* E.G: date = '07/2013' */
{        
    return db.Contents // Or wherever you're getting data from
             .Where(c => c.Date.ToString("MM/yyyy") == date);
}

这是正确的做法吗?

于 2013-05-08T14:04:34.703 回答