在c#中仅当当前字符串大小等于2时才更新List中的字符串项

问题描述 投票:0回答:2

我有两个列表,其中一个是2个字符串的列表(dteSubstringList)。 另一个列表是可变字符串长度列表(表)。

我只想在字符数等于 2 时更新第二个列表中的项目。

我可以使用 while 来完成此操作,但我想使用更优雅的方式,例如 LINQ。

这是当前代码:

        int index = 0;

        for (int i = 0; i < table.Count; i++)
        {
            if (table[i].Data.Length == 2)
            {
                table[i].Data = dteSubstringList[index].Mte;

                index++;
            }
        }
c# list linq
2个回答
0
投票

您应该仅使用 LINQ 来查询数据,而不是修改/更新数据。因此,在这种情况下,您可以确定需要使用 LINQ 更新的项目,然后使用普通循环来修改它们。您可以使用

Enumerable.Zip
通过索引链接两个集合:

var itemsToChange = table.Zip(dteSubstringList, (table, subList) => (Table:table, SubList: subList))
    .Where(x => x.Table.Data.Length == 2);
foreach (var item in itemsToChange)
{
    item.Table.Data = item.SubList.Mte;
}

0
投票

嗯,我个人认为你所拥有的已经足够了,但我仍然会尽力给你一个答案。我想说唯一可以提高可读性的部分是这样的

        var tabDateWithTwo = table.Where(t => t.Data.Length == 2).ToList();

        for (int i = 0; i < tabDateWithTwo.Count; i++)
        {
            tabDateWithTwo[i].Data = dteSubstringList[i].Mte;
        }
© www.soinside.com 2019 - 2024. All rights reserved.