如何将两个列表组合到List <KeyValuePair <>>?

Ody*_*dys 7 c# linq lambda

有两个列表:

List<string> files;
List<Filter> filters;
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

List<KeyValuePair<string, Filter>> fileFilterMap;
Run Code Online (Sandbox Code Playgroud)

我尝试了几个东西(lambda表达式,linq)但失败了.我真的不想要

for(int i = 0; i< files.count; i++)

方法.

Guf*_*ffa 13

您可以使用:

List<KeyValuePair<string, Filter>> fileFilterMap =
  Enumerable.Range(0, files.Count)
  .Select(i => new KeyValuePair<string, Filter>(files[i], filters[i]))
  .ToList();
Run Code Online (Sandbox Code Playgroud)

要么:

List<KeyValuePair<string, Filter>> fileFilterMap =
  Enumerable.Zip(
    files,
    filters,
    (file, filter) => new KeyValuePair<string, Filter>(file, filter)
  )
  .ToList();
Run Code Online (Sandbox Code Playgroud)


Ste*_*ack 5

看看Enumerable.Zip

var fileFilterMap = Enumerable.Zip(files, filters, (file, filter) => new KeyValuePair(file, filter));
Run Code Online (Sandbox Code Playgroud)