我正在使用動態linq庫構建一個動態查詢生成器。 到目前爲止,它的工作正常與布爾,數字和文字,但與日期。帶日期字段的動態Linq
我不知道日期的格式應該正常工作。
這是執行sb.ToString返回的代碼。
private string BuildQuery()
{
var sb = new StringBuilder();
//var list = RequestBaseBL.GetRequestByCustomQuery("RequestNumber == \"12\"");
#region 1st ROW of the QUERY
if (ColumnType(DdlColumn1.SelectedValue) == "Text")
{
if(DdlOperator1.SelectedValue == "==")
{
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append("\"" + TxtValue1.Text + "\"");
}
if (DdlOperator1.SelectedValue == "<>")
{
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append("\"" + TxtValue1.Text + "\"");
}
if (DdlOperator1.SelectedValue == "LIKE")
{
sb.Append(string.Format("{0}.Contains(\"{1}\")", DdlColumn1.SelectedValue, TxtValue1.Text));
}
if (DdlOperator1.SelectedValue == "NOT LIKE")
{
sb.Append(string.Format("!{0}.Contains(\"{1}\")", DdlColumn1.SelectedValue, TxtValue1.Text));
}
}
if (ColumnType(DdlColumn1.SelectedValue) == "Number")
{
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append(TxtValue1.Text);
}
if (ColumnType(DdlColumn1.SelectedValue) == "Date")
{
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append(TxtValue1.Text);
}
if (ColumnType(DdlColumn1.SelectedValue) == "Bool")
{
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append(TxtValue1.Text);
}
#endregion
return sb.ToString();
}
string strSql = BuildQuery();
try
{
var list = RequestBaseBL.GetRequestByCustomQuery(strSql, DdlRequestType.SelectedValue).ToList();
private static void AddDateOperatorsToList(Dictionary<string, string> operators)
{
operators.Add("=", "Equals");
operators.Add("<>", "Not Equals");
operators.Add(">", "Greater than");
operators.Add(">=", "Greater or equal than");
operators.Add("<", "Less than");
operators.Add("<=", "Less or equal than");
}
更新1:
錯誤是: 操作 '=' 與操作數類型的 '日期時間' 和 '的Int32'
的sb.toString()
不相容? sb.ToString() 「RequestDate = 12/12/2015」
更新2:
更新2的錯誤:
'解析' 在類型 '日期時間'
存在沒有適用的方法if (ColumnType(DdlColumn1.SelectedValue) == "Date")
{
sb.AppendFormat("DateTime.Parse({0})", DdlColumn1.SelectedValue);
var str = string.Format("{0} {1} {2}", DdlColumn1.SelectedValue, DdlOperator1.SelectedValue,
DateTime.Parse(TxtValue1.Text));
//sb.Append(DdlColumn1.SelectedValue);
//sb.Append(DdlOperator1.SelectedValue);
//sb.Append(TxtValue1.Text);
sb.Append(str);
}
更新3:
沒有工作eith呃
if (ColumnType(DdlColumn1.SelectedValue) == "Date")
{
var date = DateTime.Parse(TxtValue1.Text);
sb.Append(DdlColumn1.SelectedValue);
sb.Append(DdlOperator1.SelectedValue);
sb.Append("\"" + date.ToUniversalTime() + "\"");
//sb.Append(date.ToUniversalTime());
}
請定義「不工作」。錯誤?或意外的結果? –
你可以發佈什麼sb.ToString()返回?另外,你添加的小小圖片是不可讀的。 –
請參閱更新1. –