什么是与以下代码等效的 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。我假设它适用于您的场景,所以我将保留它。
关于c# - 如何在 LINQ 中通过索引连接两个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289566/