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

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

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

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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类常见问题

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档