我需要按日月和日过滤我的可空日期时间。
我目前正尝试使用字符串比较。我在linq中的where语句中有这个:
DOB.ToString().StartsWith("2/25/19") || DOB == null
但它不起作用。我知道它是因为服务器不存储这样的日期,但我不确定它是如何存储它的,以及如何检索它并进行比较。
我真的需要在数据库上发生这种情况。我无法获得所有内容并在服务器中进行过滤。
我只想让linq按天,月和年过滤日期
感谢任何帮助或指示。
答案 0 :(得分:2)
您可以尝试这样的事情(更新以包含可选的日期组件):
int? month = 2;
int? day = 25;
int? century = 19; // actual century minus one
// other LINQ here
.Where(x => x.DOB == null
|| ((month == null || x.DOB.Month = month)
&& (day == null || x.DOB.Day = day)
&& (century == null || x.DOB.Year / 100 == century)));
答案 1 :(得分:0)
如果您想按日,月,年过滤,请使用以下示例代码:
DateTime dateTime = DateTime.Now;
Console.WriteLine(dateTime.Day);
Console.WriteLine(dateTime.Month);
Console.WriteLine(dateTime.Year);
您可以从DateTime
对象中获取这些值。然后,您可以对其应用过滤器。
阅读评论后,我明白了你的意思。
例如,您输入如下字符串:
string search = "2/25/2015";
现在,您要提取字符串的值以执行过滤,对吧?只需:
string[] values = search.Split('/');
然后,values
将是[2, 25, 2015]
。第一个元素是月,第二个是日,第三个是年,这取决于您如何定义格式。
答案 2 :(得分:0)
试试这个:
context.Entities.Where(e => e.Date != null && e.Date.Day == 15)
您可以使用DateTime.Day
,DateTime.Month
,DateTime.Year
以及逻辑运算符&&
和||
来根据需要进行过滤。但是,您必须先检查 nullity ,否则最终可能会NullExceptions