Сравнение даты

GraaFf

Client
Регистрация
21.05.2016
Сообщения
126
Благодарностей
54
Баллы
28
Подскажите пожалуйста, думал-думал, так ничего дельного и не придумал:( Есть таблица 600к строк, в ней столбцы title, description, rating, added, в столбце added дата и время опубликованной статьи. Как можно сравнить все строки и найти самую старую статью? Была мысль, что можно брать каждую строку по отдельности и сравнивать со всей таблицей, но на это дело уйдет колоссальное количество времени :(
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
Есть таблица 600к строк, в ней столбцы title, description, rating, added, в столбце added дата и время опубликованной статьи. Как можно сравнить все строки и найти самую старую статью? Была мысль, что можно брать каждую строку по отдельности и сравнивать со всей таблицей, но на это дело уйдет колоссальное количество времени :(
берешь строку один, сравниваешь по цииклу. ка ктолько встречаешь более старую запись - начинаешь сравнивать уже эту дату, но с того же места в таблице
 
  • Спасибо
Реакции: GraaFf

GraaFf

Client
Регистрация
21.05.2016
Сообщения
126
Благодарностей
54
Баллы
28
берешь строку один, сравниваешь по цииклу. ка ктолько встречаешь более старую запись - начинаешь сравнивать уже эту дату, но с того же места в таблице
Спасибо.

Попытался реализовать это на c#, вылетают ошибки. c# использую впервые.
Подскажите, как можно задать новое значение для переменной FirstStrDateTime, +сделать ее глобальной?
Спасибо.

Код:
var sourceList = project.Lists["Users"];
lock(SyncObjects.ListSyncer)
{
    var FirstStr = sourceList[0];
    string[] FirstStrArray = FirstStr.Split(new[] {";"}, StringSplitOptions.None);
    DateTime FirstStrDateTime = Convert.ToDateTime(FirstStrArray [2]);

    for(int i=1; i < sourceList.Count; i++)
    {
        var NextStr = sourceList[i];
        string[] NextStrArray = NextStr.Split(new[] {";"}, StringSplitOptions.None);
        DateTime NextStrDateTime = Convert.ToDateTime(FirstStrArray[2]);
    
        if(FirstStrDateTime > NextStrDateTime)
        {
            DateTime FirstStrDateTime = NextStrDateTime;
        }
    }
}
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
Спасибо.

Попытался реализовать это на c#, вылетают ошибки. c# использую впервые.
Подскажите, как можно задать новое значение для переменной FirstStrDateTime, +сделать ее глобальной?
Спасибо.

Код:
var sourceList = project.Lists["Users"];
lock(SyncObjects.ListSyncer)
{
    var FirstStr = sourceList[0];
    string[] FirstStrArray = FirstStr.Split(new[] {";"}, StringSplitOptions.None);
    DateTime FirstStrDateTime = Convert.ToDateTime(FirstStrArray [2]);

    for(int i=1; i < sourceList.Count; i++)
    {
        var NextStr = sourceList[i];
        string[] NextStrArray = NextStr.Split(new[] {";"}, StringSplitOptions.None);
        DateTime NextStrDateTime = Convert.ToDateTime(FirstStrArray [2]);
     
        if(FirstStrDateTime > NextStrDateTime)
        { 
            DateTime FirstStrDateTime = NextStrDateTime;
        } 
    }
}
Убери DateTime в конце. Помимо перезаписи даты тебе стоит перезаписывать какую-то переменную, которая отвечает за номер записи. Чтобы в итоге знать, какая строка по номеру самая старая.
Что значит сделать глобальной? зачем?
 
  • Спасибо
Реакции: GraaFf

GraaFf

Client
Регистрация
21.05.2016
Сообщения
126
Благодарностей
54
Баллы
28
Убери DateTime в конце. Помимо перезаписи даты тебе стоит перезаписывать какую-то переменную, которая отвечает за номер записи. Чтобы в итоге знать, какая строка по номеру самая старая.
Что значит сделать глобальной? зачем?
Оказывается я ошибку допустил, если посмотреть на коде выше, на 12 строке должно быть DateTime NextStrDateTime = Convert.ToDateTime(NextStrArray [2]) :-)
Ранее пытался присваивать без DateTime, было куча ошибок. Глобальной как оказалось не нужно делать)
Огромное спасибо за помощь)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)