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。 有没有人知道如何查询上述情况?
答案 0 :(得分:11)
看起来你应该可以这样做:
// 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);
}
我将year
和month
拆分为单独的参数,因为这就是描述它们的方式 - 如果你真的想要能够处理“01/2013 “你可能希望只用'/'
拆分并首先将每个部分解析为整数。 (或者,将其解析为特定格式的日期,然后从中获取年份和月份。)
编辑:请注意,将每个值格式化为字符串是没有意义的,并且可能不正确,除非您小心。 (例如,除非您明确指定文化,否则如果在模式中使用/
,您将获得当前文化的日期分隔符,这可能不是您所期望的。)
您实际上并没有尝试匹配字符串模式 - 您正在尝试测试日期的年份和月份。这就是上面代码清楚表达的内容。字符串格式是无关紧要的。
答案 1 :(得分: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);
}
这是正确的方法吗?
答案 2 :(得分:0)
这只适用于月份和年份
List<eTransaction> lsttrans = db.eTransactions.Where(c => c.SchemeID == scid &&
c.DateOfPay.Value.Month == month && c.DateOfPay.Value.Year == year).ToList();