如何在 LINQ 中通过索引连接两个集合

2024-01-28

与以下代码等效的 LINQ 是什么?

string[] values = { "1", "hello", "true" };
Type[] types = { typeof(int), typeof(string), typeof(bool) };

object[] objects = new object[values.Length];

for (int i = 0; i < values.Length; i++)
{
    objects[i] = Convert.ChangeType(values[i], types[i]);
}

.NET 4 有一个 Zip 运算符,可让您将两个集合连接在一起。

var values = { "1", "hello", "true" };
var types = { typeof(int), typeof(string), typeof(bool) };
var objects = values.Zip(types, (val, type) => Convert.ChangeType(val, type));

.Zip 方法优于 .Select((s, i) => ...) 因为当集合不具有相同数量的元素时 .Select 会抛出异常,而 .Zip 只会将尽可能多的元素压缩在一起元素尽可能。

如果您使用的是 .NET 3.5,那么您将不得不满足于 .Select,或者编写您自己的 .Zip 方法。

话虽如此,我从未使用过 Convert.ChangeType。我假设它适用于您的场景,所以我将保留它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 LINQ 中通过索引连接两个集合 的相关文章

随机推荐