2009-06-26 41 views
11

在C#.NET,我有我想下面的數據源建立動態WHERE子句分配給後面的代碼...設置的LinqDataSource凡使用條款datetime列

<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'。我嘗試了其他幾種方法,但我顯然在這裏錯過了一些東西。

類似的代碼對於字符串正常工作。

回答

11

是這個嗎?

LinqDataSource1.Where = "MyDateColumn == DateTime.Parse(" + DateTime.Now + ")"; 
//can't create a date from string in constructor use .Parse()... 
2

我相信你需要在被轉換爲DateTime的字符串周圍加雙引號。

LinqDataSource1.Where = "MyDateColumn == DateTime(\"" + DateTime.Now.ToString() + "\")"; 
+0

我試過單引號不投,但沒有想到要試戴和datetime演員。不幸的是,它給出了錯誤「字符文字必須包含一個字符」 – BrianG 2009-06-26 21:25:27

+0

啊,是的 - 需要雙引號。編輯... – 2009-06-26 21:53:36

0

,以便通過J.13.L建議的最終方案看這個怎麼樣,然後......這樣......

LinqDataSource1.Where = @"MyDateColumn == DateTime.Parse(""" + MyDateTime + @""") "; 

但因爲我不想以匹配它確實看起來更像這個日期的時間部分...

LinqDataSource1.Where = @"MyDateColumn >= DateTime.Parse(""" + MyDateTime + @""") AND MyDateColumn < DateTime.Parse(""" + MyDateTime.AddDays(1) + @""")"; 
0

另一種編程方法:

dataSource.WherePredicateParameters.Clear(); 
OrExpressionParameter expression = new OrExpressionParameter(); 
expression.Parameters.Add("Birthday", DbType.DateTime, Convert.ToDateTime(txtBirthday.Text).ToString()); 
dataSource.WherePredicateParameters.Add(expression); 
1

LinqDataSource1.Where =「MyDateColumn == Convert.ToDateTime(\」「+ DateTime.Now +」\「)」;

1

這是簡單而直接:

看在頁面源代碼「ASP:使用LinqDataSource」,並增加該條款的「其中」部分。

通過帶有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 &amp;&amp; DateProcessed == NULL"> 
    <WhereParameters> 
     <asp:ControlParameter ControlID="ddlCountry" DefaultValue="US" 
      Name="Country" PropertyName="SelectedValue" Type="String" /> 
    </WhereParameters> 
</asp:LinqDataSource>