gpt4 book ai didi

c# - 使用 LINQ 按类型合并序列

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:37 25 4
gpt4 key购买 nike

我想使用 LINQ 来转换它

IEnumerable<int>[] value1ByType = new IEnumerable<int>[3];
value1ByType[0]= new [] { 0};
value1ByType[1]= new [] {10,11};
value1ByType[2]= new [] {20};

var value2ToType = new Dictionary<int,int> {
{100,0},
{101,1},
{102,2},
{103,1}};

对此

var value2ToValue1 = new Dictionary<int,int> { 
{100, 0},
{101,10},
{102,20},
{103,11}};

有没有办法用 LINQ 做到这一点?如果没有 LINQ,我将使用多个 IEnumerator,一个用于 value1ByType 的每个 IEnumerable。像这样:

// create enumerators
var value1TypeEnumerators = new List<IEnumerator<int>>();
for (int i = 0; i < value1ByType.Length; i++)
{
value1TypeEnumerators.Add(value1ByType[i].GetEnumerator());
value1TypeEnumerators[i].MoveNext();
}

// create wanted dictionary
var value2ToValue1 = new Dictionary<int, int>();
foreach (var item in Value2ToType)
{
int value1=value1TypeEnumerators[item.Value].Current;
value2ToValue1.Add(item.Key, value1);
value1TypeEnumerators[item.Value].MoveNext();
}

知道如何在 LINQ 中执行此操作吗?

最佳答案

不纯粹但你至少可以做到......

var enumerators = value1ByType.Select(v => v.GetEnumerator()).ToArray();
var value2ToValue1 = value2ToType
.ToDictionary(x => x.Key, x => { enumerators[x.Value].MoveNext(); return enumerators[x.Value].Current; });

但是有很多方法可能出错,这引出了一个问题——为什么这些数据结构中的数据呢?你能解决这个问题吗?您是如何在第二个数据结构中精确引用第一个数据结构中的元素的?

关于c# - 使用 LINQ 按类型合并序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com