动态创建 IEnumerable 集合

Create IEnumerable collections dynamiclly

我遇到了这个问题,我得到了一个包含 5000 和 2000 个条目的列表。 问题是每个人都想使用我必须手动输入的 5000 个条目列表:

IEnumerable<string> partList1;
IEnumerable<string> partList2;
IEnumerable<string> partList3;
IEnumerable<string> partList4;

然后我选择:

partList1 = SplitList(IDList, 0, 999); //args = list,skipvalue,takevalue

而且我必须对所有 4 个列表执行此操作,如果我使用 2000 个条目列表,我只需要两个 partLists。 我怎样才能让它动态地让 999 适合它创建 partLists 本身的列表的频率?

我试过类似的方法:

for(int i = 0; i < IDList.Count() / 999; i++) {
//and here I stuck
}

如果我对您的问题的理解正确,您正试图将一些列表项分成 1000 个(或 999 个;不清楚)项目的块,并为每个块创建一个 IEnumerable<string>。如果是这样,您可以创建一个 List<IEnumerable<string>> 来动态创建您的列表,并使用 .Skip() and .Take() link 方法来 "split" 主列表。

尝试这样的事情:

var listOfLists = new List<IEnumerable<string>>();
const int chunkSize = 1000;

int consumed = 0;
while (consumed < IDList.Count)
{
    listOfLists.Add(IDList.Skip(consumed).Take(chunkSize).ToList());
    consumed += chunkSize;
}