Тот же код, но с одним LinQ
(From pro in Products.ToList
Let max = {pro.DateSend, pro.DateEdit}.Max
select max).Max
Если про элементы недействительны DateTime, это приведет к сбою или возврату неожиданного результата.
Другое решение (Синтаксический элементов списка продуктов):
(From pro in Products.ToList
Let DSend as DateTime = Convert.ToDateTime(Iif(ValidDateTime(pro.DateSend), pro.DateSend, DateTime.MinValue))
Let DEdit as DateTime = Convert.ToDateTime(Iif(ValidDateTime(pro.DateEdit), pro.DateEdit, DateTime.MinValue))
Let MaxDate as DateTime= {DSend, DEdit}.Max
select MaxDate).Max
private function ValidDateTime(ByVal Dat as Object) as Boolean
if Dat Is Nothing OrElse IsDbNull(Dat) OrElse String.IsNullOrEmpty(Dat) then
return false
end if
return true
end function
Вы можете заменить ValidDateTime с "IIF".
Другие примеры, возвращающие максимальное значение Double items, но в персонализированном объекте (MyObject) элементы являются строковыми.
(From Item as MyObject in MyListOfObject
Let Frec as Double = Convert.ToDouble(Iif(String.IsNullOrEmpty(Item.Frecuency),0,Item.Frecuency))
Let Pot as Double = Convert.ToDouble(Iif(String.IsNullOrEmpty(Item.Power),0,Item.Power))
Let max as Double= {Frec, Pot}.Max
select max).Max
Recap
- Declare столбцов Items отдельно. Parse It (если вам нужно)
- Создайте элемент для хранения максимального значения строки (все столбцы)
- Создайте массив, поместите все объявленные элементы и массив asign перед объявленным элементом (элемент, созданный на этапе 2)
- Append в конце массива Макс свойство, как это:. {Элемент1, Элемент2, ...} Макс
- Создать Выберите FR вернуть Макса предмета
- Append в конце концов Макс собственности LINQ , (MyLinQ) .Max
Я надеюсь, что этот код поможет кому-то. Извините за мой английский.
Какой тип DateSend? Из вашего замечания ниже я предполагаю, что это 'DateTime?' ... Это правильно? – blins
DateSend = Datetime & DateEdit = Datetime? –