У меня возникли проблемы с переводом этого кода на C# из VB.NET. Этот код должен принимать значение из каждой ячейки столбца в базе данных (назовем его column1, это тип данных datetime, поэтому формат выглядит примерно так: 12/19/2011 7:42:30 PM), и найдите промежуток времени между Datetime.Now и этим значением столбца1 для каждой строки в элементе управления gridview. Какой-то парень дал мне этот код, который отлично работает в VB.NET:Как перевести этот код с VB.NET на C#? (переводчики не работают)
<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# , и запустите мое приложение, я получаю следующие две ошибки:
-Выбор перегруженного метода для '_Default.TimeSpan (System.DateTime)' имеет некоторый недопустимый аргумент -Argument 1: невозможно преобразовать из 'объекта' в ' System.DateTime '
Может кто-нибудь, пожалуйста, помогите мне с этим? Перевод, который работает для кода? Или еще один способ сделать то, что я хочу сделать? Благодаря
Edited: Это код (в 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;
}
Можем ли мы увидеть код C#, который вы пытались перевести на него? – BoltClock
Параметр, обозначающий эту функцию, кажется невероятно обманчивым. Вы начинаете ** время начала ** и возвращаете ** продолжительность **. –
Именование причиняет боль моему мозгу. 'DateTime' называется' Duration' и метод под названием 'TimeSpan'. Функция должна называться чем-то вроде «Age». – CodesInChaos