【问题标题】:How to change value in Data Transfer Object c#如何更改数据传输对象 c# 中的值
【发布时间】:2019-12-18 16:34:33
【问题描述】:

我想将我的 DTO 中的一个值分配给另一个表中的另一个值。我已经尝试了以下但似乎没有工作。我想将 DTO.Option 中的已删除值更改为 QuestionOptions 表中的已删除值。我的代码如下:

  private List<DTO.Option> MapOptions(List<DAL.QuestionOption> o)
    {
        List<DTO.Option> op = new List<DTO.Option>();

        foreach (DAL.QuestionOption opt in o)
        {
            {
                DTO.Option Option = MapOption(opt.Option);


                foreach (var i in o)
                {
                    Option.Deleted = i.isDeleted;
                }
                op.Add(Option);
            }          
        }

        return op;
    }

    private DTO.Option MapOption(DAL.Option o)
    {
        return new DTO.Option()
        {
            ID = o.ID,
            Text = o.Text,
            Value = o.Value
        };
    }

代码更新为

     private List<DTO.Option> MapOptions(List<DAL.QuestionOption> o)
    {
        List<DTO.Option> op = new List<DTO.Option>();

        foreach (DAL.QuestionOption opt in o)
        {
            op.Add(MapOption(opt.Option));
        }

        return op;
    }

        private DTO.Option MapOption(DAL.QuestionOption o)
        {
            return new DTO.Option()
            {
                ID = o.Option.ID,
                Text = o.Option.Text,
                Value = o.Option.Value,
                Deleted = o.isDeleted

            };
        }

【问题讨论】:

    标签: c# asp.net-mvc linq


    【解决方案1】:

    您在List&lt;DAL.QuestionOption&gt; 的循环中循环遍历List&lt;DAL.QuestionOption&gt;,并为每个循环重新分配Deleted 属性。除非我弄错了,那不是你的本意。剩下的每个DTO.Option.Deleted 都等于列表中最后一项的DAL.QuestionOption.isDeleted。我猜DAL.QuestionOption 大概是这样的:

    public class DAL.QuestionOption
    {
        public DAL.Option Option { get; set; }
        public boolean isDeleted { get; set; }
    }
    
    public class DAL.Option
    {
        public int Id { get; set; }
        public string Text { get; set; }
        public string Value { get; set; }
    }
    

    如果是这样,我只需将MapOption 更改为接收DAL.QuestionOption 而不是DAL.Option:

    private DTO.Option MapOption(DAL.QuestionOption o)
    {
        return new DTO.Option()
        {
            ID = o.Option.ID,
            Text = o.Option.Text,
            Value = o.Option.Value,
            Deleted = o.isDeleted
        };
    }
    

    【讨论】:

    • 嗨,Nathan,谢谢你,我已经更新了原始帖子中的代码,你认为我应该在 MapOptions List 方法中为 MapOption 提供什么参数?
    • 我已经回答了我自己的问题 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多