У меня есть небольшая проблема, связанная с выражением LINQ для некоторой группы, которую я хотел бы сделать. У меня есть большой список, возможно, нескольких тысяч писем, которые нужно отправить, и я хотел бы сгруппировать их в списки из 2000 писем и поместить их в родительский список. Оригинальный список выглядит следующим образом: List<Recipient>()
Группировка элементов списка с GroupBy
Получатели имеют имя, адрес и т.д.
Я написал то, что я хочу сделать с Еогеасп, но если это возможно Я бы хотел, чтобы он как LINQ Я просто не могу понять это.
private List<List<Recipient>> PhysicalPageList(List<Recipient> recipients)
{
var pageList = new List<List<Recipient>>();
var smallList = new List<Recipient>();
foreach (var rec in recipients)
{
smallList.Add(rec);
if (smallList.Count % 2000 == 0) { continue; }
var tmpList = new List<Recipient>();
tmpList.AddRange(smallList);
pageList.Add(smallList);
smallList.Clear();
}
if (smallList.Count() != 0)
{
var tmpList = new List<Recipient>();
tmpList.AddRange(smallList);
pageList.Add(tmpList);
smallList.Clear();
}
return pageList;
}
У меня есть пример этого со строками и не реципиентов (нету письменного это сам):
private List<List<string>> PageList(List<string> recipients)
{
return recipients.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index/2000)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();
}
Я попробовал то же самое, но LINQ wouldn't позвольте мне выбрать из списка получателей.
Да, я просто понял, что, как хорошо ... Я не знаю, где я пошло не в первый раз, но теперь он работает ... – Todtaure
@Todtaure спасибо чувак! иногда бывает. Я рад, что помог. – Christos