Страницы

Поиск по вопросам

пятница, 19 апреля 2019 г.

Сравнение DateTime через LINQ

Стыдно, знаю. Не нагуглил. Как вывести всех людей, у которых ДР меньше чем в переменной defaultDateTimes? Через LINQ
public class Person1 { public string Name; public DateTime Birthday; }
class Program { static void Main(string[] args) { DateTime defaultDateTimes = new DateTime(2000,1,1);
var people = new List(); var p1 = new Person1() { Name = "Leslie", Birthday = new DateTime(1983, 9, 4) }; var p2 = new Person1() { Name = "Chris", Birthday = new DateTime(2001, 6, 19) }; var p3 = new Person1() { Name = "JP", Birthday = new DateTime(1983, 4, 5) }; } }


Ответ

Например, так:
DateTime defaultDateTimes = new DateTime(2000, 1, 1);
var people = new List() { new Person1() { Name = "Leslie", Birthday = new DateTime(1983, 9, 4) }, new Person1() { Name = "Chris", Birthday = new DateTime(2001, 6, 19) }, new Person1() { Name = "JP", Birthday = new DateTime(1983, 4, 5) } };
var filteredPeople = people.Where(p => p.Birthday < defaultDateTimes); foreach (var p in filteredPeople) Console.WriteLine(p.Name);

LINQ предназначено для преобразования данных. Оно умеет, например, отбирать данные из списка (как в вашем случае людей) и преобразовывать их. Выполнять действия с данными (например, вывести имя человека) LINQ не умеет (да и не предназначено для этого).
Поэтому в вашей задаче фильтрация данных — дело LINQ, а для вывода нужно использовать обыкновенный цикл foreach

Комментариев нет:

Отправить комментарий