У меня есть объект, у которого есть свойство даты и свойство Z.

class myClass
{
    DateTime theDate;
    int Z =0;
}

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

public int GetMaxZ(List<myClass> myClasses, DateTime date)
{
    int z=0;
    z = select Z from c in myClasses
        where c.theDate=date 
    //Select the Max somehow
    return z;
}

Очевидно, что код не позволяет выбрать наивысшее Z конкретной даты.

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

c#
0
General Grey 25 Фев 2016 в 23:16

2 ответа

Лучший ответ
myClasses.Where(x => x.theDate == date)
.Select(x => x.Z)
.OrderByDescending(x => x)
.FirstOrDefault();
2
Martin Staufcik 25 Фев 2016 в 20:20

Во-первых, этот код даже не компилируется, поскольку select - это IQueryable, но вы пытаетесь использовать его как int.

Но, на удачу, поскольку это IQueryable, вы можете просто использовать Max ():

public int GetMaxZ(List<myClass> myClasses, DateTime date)
{
    var z = from c in myClasses
            where c.theDate=date
            select Z;

    return z.Max();
}
1
Gusman 25 Фев 2016 в 20:52