Я старая пчела в .NET, но очень новая для Linq! После некоторого базового чтения я решил проверить свое мастерство, и я потерпел неудачу полностью! Я не знаю, где я ошибаюсь.Выберите первые N записей после фильтрации в каждой группе
Я хочу, чтобы выбрать самый высокий 2-го порядка для каждого человека, в то время как для Сумма% 100 == 0.
Вот мой код.
var crecords = new[] {
new {
Name = "XYZ",
Orders = new[]
{
new { OrderId = 1, Amount = 340 },
new { OrderId = 2, Amount = 100 },
new { OrderId = 3, Amount = 200 }
}
},
new {
Name = "ABC",
Orders = new[]
{
new { OrderId = 11, Amount = 900 },
new { OrderId = 12, Amount = 800 },
new { OrderId = 13, Amount = 700 }
}
}
};
var result = crecords
.OrderBy(record => record.Name)
.ForEach
(
person => person.Orders
.Where(order => order.Amount % 100 == 0)
.OrderByDescending(t => t.Amount)
.Take(2)
);
foreach (var record in result)
{
Console.WriteLine(record.Name);
foreach (var order in record.Orders)
{
Console.WriteLine("-->" + order.Amount.ToString());
}
}
Может ли кто-нибудь сосредоточиться и рассказать мне, что будет правильным вопросом?
Заранее спасибо
А, это правильно. Большое спасибо. –
Без проблем - рад, что я мог бы помочь :) –
Ударьте меня тоже, причина этой ошибки связана с тем, что ForEach() возвращает void, потому что он фактически модифицирует себя, поэтому ему ничего не нужно возвращать. Таким образом, ваш «результат» будет равен – Corylulu