将自定义列表对象复制到另一个列表对象

我进行了很多搜索,我知道这个问题已被问过很多次,但是找不到适合我问题的解决方案。

我有一个具有以下结构的课程

namespace Website.Models
{
    public class DynamicControlModel
    {
    }

    public class QuestionnairModel
    {
        public long QuestionId { get; set; }
        public string Question { get; set; }
        public List<QuestionnairOptionModel> QuestionnairOption { get; set; }
    }

    public class QuestionnairOptionModel
    {
        public long OptionId { get; set; }
        public string OptionString { get; set; }
        public bool OptionControl1 { get; set; }
        public string OptionControl2 { get; set; }
    }
}

我尝试这样做:

public ActionResult ProcessRequest(List<QuestionnairModel> model)
{
    List<QuestionnairModel> result = new List<QuestionnairModel>(model);
    result = result.Where(x => x.QuestionnairOption.Any(l => l.OptionControl1 == true)).ToList();
    result.ForEach(x => x.QuestionnairOption.RemoveAll(m => m.OptionControl1 == false));
    return View(@"~\Views\Home\About.cshtml", model);
}

这里的问题是,当我从结果对象中删除项目时,它也会从模型中删除。我希望模型对象不应该由于结果对象的任何变化而受到影响。

我知道默认情况下,类是通过引用传递的,这就是为什么将其从两个对象中删除的原因。

让我知道如何使它按价值传递,这可能会解决问题。

感谢@David Pilkington

我已使用以下代码解决了我的问题。


     public static class ObjectCopier 
    { 
        /// 
        ///执行对象的深层复制。
        /// 
        ///要复制的对象的类型。
        ///要复制的对象实例。
        ///复制的对象。
        公共静态T Clone(T源)
        {
            如果(!typeof(T).IsSerializable)
            {
                抛出新ArgumentException(“类型必须可序列化。”,“源”); 
            } 

            //不要序列化一个空对象,
            如果(Object.ReferenceEquals(source,null))
            {
                返回default(T); 
            } 

            IFormatter formatter = new BinaryFormatter(); 
            流stream =新的MemoryStream(); 
            使用(stream)
            { 
                formatter.Serialize(stream,source); 
                stream.Seek(0,SeekOrigin.Begin); 
                返回(T)formatter.Deserialize(stream); 
            } 
        } 
    }

我在现有代码中所做的唯一更改就是将[Serializable]属性添加到此类中。


     [可序列化]
    公共类QuestionnairModel 
    { 
        public long QuestionId { 放; }
        公共字符串Question {get; 放; }
        公开清单QuestionnairOption {get; 放; } 
    } 

    [可序列化]
    公共类QuestionnairOptionModel 
    { 
        public long OptionId {get; 放; }
        公共字符串OptionString {get; 放; } 
        public bool OptionControl1 {get; 放; }
        公共字符串OptionControl2 {get; 放; } 
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

angular2:如何将对象复制到另一个对象

来自分类Dev

将对象引用复制到另一个可观察对象

来自分类Dev

使用推土机的自定义转换器将对象列表映射到另一个列表

来自分类Dev

将时间戳对象的值复制到另一个对象

来自分类Dev

如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

来自分类Dev

使用Guava集合将自定义对象列表转换/过滤到另一个对象

来自分类Dev

将对象复制到具有特定条件的另一个对象

来自分类Dev

将条件从一个对象复制到另一个对象

来自分类Dev

如何在Flutter中将列表值复制到另一个列表

来自分类Dev

根据属性将列表对象从一个列表复制到另一列表

来自分类Dev

将对象的属性复制到另一个跳过未定义的属性

来自分类Dev

将每个列表项复制到另一个列表项属性

来自分类Dev

使用Excel VBA将行从一个列表对象复制到另一个列表对象

来自分类Dev

使用Angular将对象属性(不带值)复制到另一个对象

来自分类Dev

将对象列表复制到另一个对象中另一个对象的另一个列表

来自分类Dev

将自定义对象传递给另一个片段

来自分类Dev

将包含其他自定义对象的对象列表从一个活动发送到另一个活动

来自分类Dev

将一个列表对象中所有可见单元格的值复制到另一个空列表对象?

来自分类Dev

将自定义对象数组传递给android中的另一个Activity

来自分类Dev

如何将值从一个列表复制到另一个具有不同对象的列表

来自分类Dev

使用Guava集合将自定义对象列表转换/过滤到另一个对象

来自分类Dev

将对象复制到具有特定条件的另一个对象

来自分类Dev

Angular-2:将一个对象复制到另一个

来自分类Dev

Automapper不会将列表对象复制到另一个对象

来自分类Dev

将列表中的对象复制到同一列表中的另一个对象中

来自分类Dev

将对象从一个 json 数组复制到另一个

来自分类Dev

为什么与“is”比较表示从一个列表复制到另一个列表的值是同一个对象?

来自分类Dev

JS 将一个对象复制到另一个对象

来自分类Dev

如何将对象列表复制到另一个 [Typescript]

Related 相关文章

  1. 1

    angular2:如何将对象复制到另一个对象

  2. 2

    将对象引用复制到另一个可观察对象

  3. 3

    使用推土机的自定义转换器将对象列表映射到另一个列表

  4. 4

    将时间戳对象的值复制到另一个对象

  5. 5

    如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

  6. 6

    使用Guava集合将自定义对象列表转换/过滤到另一个对象

  7. 7

    将对象复制到具有特定条件的另一个对象

  8. 8

    将条件从一个对象复制到另一个对象

  9. 9

    如何在Flutter中将列表值复制到另一个列表

  10. 10

    根据属性将列表对象从一个列表复制到另一列表

  11. 11

    将对象的属性复制到另一个跳过未定义的属性

  12. 12

    将每个列表项复制到另一个列表项属性

  13. 13

    使用Excel VBA将行从一个列表对象复制到另一个列表对象

  14. 14

    使用Angular将对象属性(不带值)复制到另一个对象

  15. 15

    将对象列表复制到另一个对象中另一个对象的另一个列表

  16. 16

    将自定义对象传递给另一个片段

  17. 17

    将包含其他自定义对象的对象列表从一个活动发送到另一个活动

  18. 18

    将一个列表对象中所有可见单元格的值复制到另一个空列表对象?

  19. 19

    将自定义对象数组传递给android中的另一个Activity

  20. 20

    如何将值从一个列表复制到另一个具有不同对象的列表

  21. 21

    使用Guava集合将自定义对象列表转换/过滤到另一个对象

  22. 22

    将对象复制到具有特定条件的另一个对象

  23. 23

    Angular-2:将一个对象复制到另一个

  24. 24

    Automapper不会将列表对象复制到另一个对象

  25. 25

    将列表中的对象复制到同一列表中的另一个对象中

  26. 26

    将对象从一个 json 数组复制到另一个

  27. 27

    为什么与“is”比较表示从一个列表复制到另一个列表的值是同一个对象?

  28. 28

    JS 将一个对象复制到另一个对象

  29. 29

    如何将对象列表复制到另一个 [Typescript]

热门标签

归档