0

我在变量 Files 中有文件列表var Files

DirectoryInfo info = new DirectoryInfo(dir);

var Files = info
  .GetFiles("*.txt")
  .Where(p => p.LastWriteTime.Date == DateTime.Today);

例如,如果我在变量文件中有 500 个文件名。我需要将备用文件名添加到列表中。在for each循环内部,我需要像这样在 container1 中添加第一个文件,在 container2 中添加第二个文件。

List1: Container1(它将像这样添加第1、3、5个文件)

List2: Container2(它将像这样添加第2、4、6个文件)

4

2 回答 2

1

您可以使用LinqGroupByintialFiles分组:

var Alternated = Files
  .Select((name, index) => new {name, index})
  .GroupBy(item => item.index % 2, item => item.name)
  .Select(group => group.ToList())
  .ToArray();

var list1 = Alternated[0];
var list2 = Alternated[1];

或循环(无 Linq 解决方案)

var list1 = new List<FileInfo>();
var list2 = new List<FileInfo>();

var currentList = list1;

foreach (var item in Files) {
  currentList.Add(item);

  currentList = currentList == list1 ? list2 : list1;
}
于 2020-01-09T09:49:53.563 回答
1

你可以简单地试试这个。任何空检查等异常处理都被忽略了。

var Files = info.GetFiles("*.txt")
        .Where(p => p.LastWriteTime.Date == DateTime.Today);

var list1 = Files.Where((file,index) => index % 2 != 0);
var list2 = Files.Where((file,index) => index % 2 == 0);
于 2020-01-09T09:47:36.583 回答