このコードを VB.NET から C# に変換する際に問題が発生しています。このコードは、データベース内の列の各セルから値を取得することになっています (これを column1 と呼びましょう。データ型は datetime なので、形式は次のようになります: 12/19/2011 7:42:30 PM)。そして、Datetime.Now と gridview コントロールの各行の column1 の値の間のタイムスパンを見つけます。ある人が、VB.NET で完全に動作する次のコードを教えてくれました。
<asp:TemplateField HeaderText="TimeSpan">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# TimeSpan(IIf(IsDBNull(Eval("column1")), DateTime.Now,Eval("column1"))) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
コードビハインドの場合:
Protected Function TimeSpan(ByVal Duration As DateTime) As TimeSpan
Dim date1 As DateTime = Duration
Dim date2 As DateTime = DateTime.Now
Dim ts As TimeSpan = (date2 - date1)
Return ts
End Function
VB.NET では動作しますが、C# に変換してアプリケーションを実行しようとすると、次の 2 つのエラーが発生します。
- '_Default.TimeSpan(System.DateTime)' に最適なオーバーロードされたメソッド マッチには無効な引数があります - 引数 1: 'object' から 'System.DateTime' に変換できません
誰かがこれで私を助けてくれますか? コードに適した翻訳?または、私がやりたいことを行う別の方法はありますか?ありがとう
編集済み:これはコードです(C#で、トランスレーターを使用して取得します)。実際には、前に述べた例外を与えるコードです:
<asp:TemplateField HeaderText="TimeSpan">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# TimeSpan((Information.IsDBNull(Eval("column1")) ? DateTime.Now : Eval("column1")))
%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
コードビハインドの場合:
protected TimeSpan TimeSpan(DateTime Duration)
{
DateTime date1 = Duration;
DateTime date2 = DateTime.Now;
TimeSpan ts = (date2 - date1);
return ts;
}