Я не могу получить результат запроса общего списка - PullRequest
0 голосов
/ 06 июня 2019
public class UTCTime
{
    public DateTime UTCBas { get; set; }
    public DateTime UTCSon { get; set; }
    public TimeSpan Fark { get; set; }
    public char Sezon { get; set; }

    public UTCTime(string UTCStart , string UTCStop , string Fark , char Sezon)
    {
        this.UTCBas = Convert.ToDateTime(UTCStart);
        this.UTCBas = Convert.ToDateTime(UTCStop);
        this.Fark = TimeSpan.Parse(Fark);
        this.Sezon = Sezon;
    }

    public override string ToString()
    {
        return $"{this.UTCBas.ToString(@"yyy-MM-dd")} - {this.UTCBas.ToString(@"yyy-MM-dd")} - {this.Fark} - {this.Sezon}";
    }
}

Я вношу эти данные в общий список из этого класса.

public static void MTDoldur()
{
    MarketTime.Add(new UTCTime("2000-04-01", "2000-10-28", "03:00", 'Y'));
    MarketTime.Add(new UTCTime("2000-10-28", "2001-03-31", "02:00", 'K'));
    MarketTime.Add(new UTCTime("2001-03-31", "2001-10-27", "03:00", 'Y'));
    MarketTime.Add(new UTCTime("2001-10-27", "2002-04-06", "02:00", 'K'));
    MarketTime.Add(new UTCTime("2002-04-06", "2002-10-26", "03:00", 'Y'));
    MarketTime.Add(new UTCTime("2002-10-26", "2003-04-05", "02:00", 'K'));
    MarketTime.Add(new UTCTime("2003-04-05", "2003-10-25", "03:00", 'Y'));
    MarketTime.Add(new UTCTime("2003-10-25", "2004-04-03", "02:00", 'K'));
}

Я хочу добавить результат запроса LINQ в общий список, который будет создан из этого класса.,

public class SonucTime
{
    public TimeSpan Fark { get; set; }
    public char Sezon { get; set; }

    public SonucTime(TimeSpan Fark , char Sezon)
    {
        this.Fark = Fark;
        this.Sezon = Sezon;
    }

    public override string ToString()
    {
        return $"Fark : {this.Fark}   Sezon : {this.Sezon}";
    }
}

Я вытягиваю тип запроса в типе данных VAR, не выходит из строя, но я не могу распечатать данные на экране и назначить их переменным.Я хочу перенести результат в общий список и экспортировать данные в переменные из типа данных VAR.Я не могу понять свою проблему, я жду вашей помощи.

static void Main(string[] args)
{
    MTDoldur();

    DateTime xT = new DateTime();
    xT = new DateTime(2003, 12, 21);

    var sonuc = (from m in MarketTime 
                 where xT >= m.UTCBas && xT <= m.UTCSon
                 select new { m.Fark, m.Sezon }).ToList(); 
}

1 Ответ

2 голосов
/ 06 июня 2019

Вы допустили ошибку «copy-past» в UTCTime-конструкторе - UTCSon не был инициализирован.

Необходимо исправить конструктор:

public UTCTime(string UTCStart , string UTCStop , string Fark , char Sezon)
{
    this.UTCBas = Convert.ToDateTime(UTCStart);
    this.UTCSon = Convert.ToDateTime(UTCStop); // <----
    this.Fark = TimeSpan.Parse(Fark);
    this.Sezon = Sezon;
}

и запросить данные:

var sonuc = (from m in MarketTime 
            where xT >= m.UTCBas && xT <= m.UTCSon
            select new SonucTime(m.Fark, m.Sezon))
            .ToList();
/*
result:
sonuc
Count = 1
[0] [SonucTime]:{Fark : 02:00:00   Sezon : K}
Fark [TimeSpan]:{02:00:00}
Sezon [char]:75 'K'
*/
...