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

如何用C#(含LINQ)按条件将TrackList数组转存到TrackListMain数组

解决方案

首先,假设你的两个模型定义如下(如果已定义可忽略):

public class TrackList
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? Apr_By { get; set; }
    public int? Reg_By { get; set; }
}

public class TrackListMain
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Status { get; set; }
}

你可以用LINQ的SelectMany方法实现需求,它能把单条原记录映射为多条目标记录,完美匹配你的转换规则:

// 从数据库获取数据后执行转换
var dbArray = await _SQLHelper.GetRecords<TrackList>("[TASKLIST]", parameters);

IEnumerable<TrackListMain> mainArray = dbArray.SelectMany(track => 
{
    var result = new List<TrackListMain>();

    // 规则2:apr_by不为null时添加status为"AB"的记录
    if (track.Apr_By != null)
    {
        result.Add(new TrackListMain
        {
            Id = track.Id,
            Name = track.Name,
            Status = "AB"
        });
    }

    // 规则3:reg_by不为null时添加status为"RB"的记录
    if (track.Reg_By != null)
    {
        result.Add(new TrackListMain
        {
            Id = track.Id,
            Name = track.Name,
            Status = "RB"
        });
    }

    // 规则1:两者都为null时添加status为null的记录
    if (track.Apr_By == null && track.Reg_By == null)
    {
        result.Add(new TrackListMain
        {
            Id = track.Id,
            Name = track.Name,
            Status = null
        });
    }

    return result;
});

说明

  • SelectMany会遍历每条TrackList记录,将其转换为对应的TrackListMain集合,最终合并成一个完整的IEnumerable<TrackListMain>。
  • 按规则顺序判断,确保不会遗漏或重复生成记录,完全匹配你给出的示例数据转换结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:25:28