即时通讯使用动态linq构建查询,我遇到 DateTime
的问题queryResults-包含上一个查询的结果列表。
sr.FromDate-一个DateTime参数
我想要做的是获得大于等于sr.FromDate参数的所有结果
var z = queryResults
.Where("Min(Datetime) >= @0", sr.FromDate)
.ToDictionary(g => g.FirstOrDefault().ServiceInstanceId, g => g.ToList());
exeption:
ParseError , '.' or '(' expected
修改
只是澄清我们使用动态linq SR 对象包含字符串int和日期参数 如果参数的值不是null我建立一个查询
编辑2
我弄清楚我的privus问题,但现在我有另一个问题,我使用它来构建查询
private static string GetQueryTemplet(string criteria)
{
switch (criteria)
{
case "FromDate":
return " Min(Track.Datetime) >= {0} ";
case "ToDate":
return " Max(Track.Datetime) <= {0} ";
default:
return "";
}
比将数据传递给
var z = queryResolts
.Where(query)
.ToDictionary(g => g.Key, g => g.Select(h => h.Track));
出于某种原因即可获得此异常
Operator '>=' incompatible with operand types 'DateTime' and 'Int32'
我试图以多种方式解析它,但没有任何作用......
感谢 三木
答案 0 :(得分:1)
假设您的结果有一个DateTime列
var z = queryResults
.Where(result => result.DateTime >= sr.FromDate)
.ToDictionary(g => g.FirstOrDefault().ServiceInstanceId, g => g.ToList());