You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何遍历List<string>每12个元素为一组填充Model属性?

实现方案

基础实现(性能最优,推荐)

假设你的业务Model类定义如下(属性顺序和列表每12个元素的顺序一一对应):

public class BusinessRecord
{
    // 按元素顺序定义12个对应属性
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string ContactPhone { get; set; }
    // 其余9个属性按业务实际需求补充,顺序和元素顺序严格对齐
}

遍历列表分组赋值的代码:

// 存储最终转换后的所有业务记录
List<BusinessRecord> recordList = new List<BusinessRecord>();

// 按步长12遍历字符串列表,每次处理一条完整记录
for (int i = 0; i < list.Count; i += 12)
{
    // 兜底判断,避免剩余元素不足12个时索引越界
    if (i + 11 >= list.Count)
    {
        break;
    }
    BusinessRecord currentRecord = new BusinessRecord();
    // 依次赋值12个属性
    currentRecord.LastName = list[i];
    currentRecord.FirstName = list[i + 1];
    currentRecord.ContactPhone = list[i + 2];
    // 剩余9个属性依次对应 list[i+3] 到 list[i+11] 赋值即可
    recordList.Add(currentRecord);
}

简化实现(适合属性多的场景,用反射批量赋值)

如果不想手动写12行赋值代码,可以用反射自动匹配赋值,注意Model属性的定义顺序必须和列表元素顺序完全一致:

// 提前获取Model类的所有公共属性
var modelProperties = typeof(BusinessRecord).GetProperties();
List<BusinessRecord> recordList = new List<BusinessRecord>();

for (int i = 0; i < list.Count; i += 12)
{
    if (i + 11 >= list.Count)
    {
        break;
    }
    BusinessRecord currentRecord = new BusinessRecord();
    for (int j = 0; j < 12; j++)
    {
        modelProperties[j].SetValue(currentRecord, list[i + j]);
    }
    recordList.Add(currentRecord);
}

注意事项

  • 你原有读取Excel的代码中,异常分支没有向列表插入占位元素,会导致单元格读取失败时整体元素顺序错位,建议修改为如下逻辑,保证元素总数始终为12的倍数:
for (int r = 2; r <= rows; r++)
{
    for (int c = 3; c <= cols; c++)
    {
        try
        {
            // 增加空值判断,避免空引用异常
            list.Add(usedRange.Cells[r, c].Value2?.ToString() ?? string.Empty);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            // 异常时插入空字符串占位,保证元素数量对齐
            list.Add(string.Empty);
        }
    }
}

内容的提问来源于stack exchange,提问作者Joao Livio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:36:08