DateTime newDate = DateTime.Now.AddDays(-30);
var queryResultPage = (from r in CustomPlanning
where (r.Assignment == "In Use") &&
(r.CUST_SHRT_NM != null) &&
System.Convert.ToDateTime(r.lastlogontimestamp) < newDate &&
!(from uA in SurveyActivity
where uA.CustomDemandID == r.ID
select uA.CustomDemandID).Contains(r.ID)
select r)
.OrderBy(t => t.ID);
以上是我的代码。 lastlogontimestamp是我表中的字符串字段。我需要执行此检查以在网格中显示查询结果。有人可以帮忙吗?
答案 0 :(得分:1)
好的我试过这个并且有效
DateTime newDate = DateTime.Now.AddDays(-30);
var queryResultPage = (from r in CustomPlanning
where (r.Assignment == "In Use") && (r.lastlogontimestamp != null && r.lastlogontimestamp != string.Empty)
&& (r.CUST_SHRT_NM != null)
&& !(from uA in SurveyActivity where uA.CustomDemandID == r.ID select uA.CustomDemandID).Contains(r.ID)
select r).OrderBy(t => t.ID).ToList();
queryResultPage = queryResultPage.Where(r => System.Convert.ToDateTime(r.lastlogontimestamp) < newDate).ToList();
答案 1 :(得分:0)
您不能直接在此查询中。您需要在列表中实现查询的结果,并运行另一个查询以使用Linq-To-Objects过滤返回的CustomPlanning(它支持转换)。
您可以将newDate转换为字符串
string newDate = DateTime.Now.AddDays(-30).ToString();
并尝试比较字符串,但您需要涵盖很多很多情况,因此不建议这样做。您可以考虑将lastlogontimestamp的类型更改为DateTime,当您有日期时,将它们存储为日期是很自然的。