練習問題 (by chatGPT)
record User(int Id, string Name, int Age);
record Order(int Id, int UserId, string Item, int Price, DateTime OrderedAt);
record Review(int Id, int UserId, string Item, int Stars); // 1〜5
var users = new List<User> {
new(1,"Alice",29), new(2,"Bob",17), new(3,"Carol",35),
new(4,"Dave",29), new(5,"Eve",41)
};
var orders = new List<Order> {
new(101,1,"Book",1200, new DateTime(2025,10,01)),
new(102,1,"Mouse",2500, new DateTime(2025,10,05)),
new(103,2,"Game",6800, new DateTime(2025,10,08)),
new(104,3,"Desk",12000,new DateTime(2025,10,09)),
new(105,3,"Pen",200, new DateTime(2025,10,10)),
new(106,4,"Chair",8000,new DateTime(2025,10,12)),
new(107,4,"Cable",900, new DateTime(2025,10,14)),
new(108,5,"Desk",11000,new DateTime(2025,10,15))
};
var reviews = new List<Review> {
new(201,1,"Book",4), new(202,1,"Mouse",5), new(203,2,"Game",3),
new(204,3,"Desk",5), new(205,4,"Chair",4) // Eveのレビューは無し
};
回答例
// users から 20歳以上の Name を アルファベット順で並べ、ToArray()を使う
var adult = (from u in users
where u.Age >= 20
orderby u.Name
select u.Name).ToArray();
// orders から 価格が1000未満の注文の (Item, Price) を Price 昇順で列挙
var order = (from u in orders
where u.Price < 1000
orderby u.Price
select new {u.Item, u.Price}).ToArray();