在C#.net中,我有以下DataSource设置,我试图在后面的代码中动态分配WHERE子句...
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="MyNameSpace.DataClasses1DataContext"
TableName="MyTableWithADateTimeColumn" >
</asp:LinqDataSource>
背后的代码看起来像这样...
LinqDataSource1.Where = "MyDateColumn == DateTime(" + DateTime.Now + ")";
这给了我')' or ',' expected
的错误。我也试过在引号内插入它,因为没有将其作为DateTime和引号标记...
LinqDataSource1.Where = @"MyDateColumn == """ + DateTime.Now + @""" ";
这给了我Operator '==' incompatible with operand types 'DateTime' and 'String'
。我已经尝试了其他几种方法,但我显然在这里遗漏了一些东西。
类似的代码适用于字符串。
答案 0 :(得分:11)
LinqDataSource1.Where = "MyDateColumn == DateTime.Parse(" + DateTime.Now + ")";
//can't create a date from string in constructor use .Parse()...
答案 1 :(得分:2)
我认为你需要在被转换为DateTime的字符串周围加上双引号。
LinqDataSource1.Where = "MyDateColumn == DateTime(\"" + DateTime.Now.ToString() + "\")";
答案 2 :(得分:1)
LinqDataSource1.Where =“MyDateColumn == Convert.ToDateTime(\”“+ DateTime.Now +”\“)”;
答案 3 :(得分:1)
这很简单直接:
查看“asp:LinqDataSource”的页面源代码,并在“where”部分添加该子句。
通过带有NULL参数的向导添加它会失败。
以下是一个例子:
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="MyDataContext"
EntityTypeName="" GroupBy="MyItem" Select="new (key as Item1, Count() as TotalQuantity)"
TableName="MyTable"
Where="Country == @Country && DateProcessed == NULL">
<WhereParameters>
<asp:ControlParameter ControlID="ddlCountry" DefaultValue="US"
Name="Country" PropertyName="SelectedValue" Type="String" />
</WhereParameters>
</asp:LinqDataSource>
答案 4 :(得分:0)
所以J.13.L建议的最终解决方案看起来像这样......
LinqDataSource1.Where = @"MyDateColumn == DateTime.Parse(""" + MyDateTime + @""") ";
但是因为我不想在日期的时间部分匹配,所以看起来真的更像......
LinqDataSource1.Where = @"MyDateColumn >= DateTime.Parse(""" + MyDateTime + @""") AND MyDateColumn < DateTime.Parse(""" + MyDateTime.AddDays(1) + @""")";
答案 5 :(得分:0)
另一种编程方式:
dataSource.WherePredicateParameters.Clear();
OrExpressionParameter expression = new OrExpressionParameter();
expression.Parameters.Add("Birthday", DbType.DateTime, Convert.ToDateTime(txtBirthday.Text).ToString());
dataSource.WherePredicateParameters.Add(expression);