与以下代码等效的 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(使用前将#替换为@)