C# 映射两个复杂对象

2024-01-23

我有四门课:

public class Customer
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public List<Product> Product { get; set; }
}

public class Product
{
    public int ProductNumber { get; set; }

    public string ProductColor { get; set; }
}

///////////////////////////////////////////////

public class Customer_
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public List<Article> Article { get; set; }
}

public class Article
{
    public int ArticleNumber { get; set; }

    public string ArticleColor { get; set; }
}

还有一个例子:

var Cus = new List<Customer>
{
    new Customer()
    {
        FirstName = "FirstName1",
        LastName = "LastName1",
        Product = new List<Product>
        {
            new Product()
            {
                ProductColor = "ProductColor1",
                ProductNumber = 11
            }
        }
    },               
    new Customer()
    {
        FirstName = "FirstName2",
        LastName = "LastName2",
        Product = new List<Product>
        {
            new Product()
            {
                ProductColor = "ProductColor2",
                ProductNumber = 12
            }
        }
    }
};

我想创建一个新对象List<Customer_>与我的实例的价值Cus。例如Customer.FirstName = Customer_.FirstName, Customer.Product.ProductColor = Customer_.Article.ArticleColor etc

轻松做到这一点的最佳方法是什么,可以使用Dictionary?


映射可以通过使用Interface https://msdn.microsoft.com/en-us/library/87d83y5b.aspx.


定义一个接口,它提供逻辑命名属性的映射,例如您提到的常见颜色属性:

// Some entities have different named properties but can be joined
// using those properties. This interface shows a common color which 
// when implemented will route the processing to a common shared property
// which reports and sets the associated color.
public interface IDefinedColor
{
    string Color { get; set; }
}

如果你必须创建partial课程为Product and Article并让它们遵守所述接口。提示如果使用实体映射器(例如 EF),这是使用部分进行此类映射的好方法。实现接口并连接通用性:

// Holds the common properties for future processing.
public partial class Product : IDefinedColor
{
    public string Color
    {
        get { return ProductColor; }
        set { ProductColor = value; }
    }
}

然后工作IDefinedColor mapped根据需要实施。


通过使用接口,可以让所有未来的开发人员知道契约,该契约指定属性中的业务逻辑相等性,并且它不会隐藏在其他属性中joining类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 映射两个复杂对象 的相关文章

  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • 如何使用Entity Framework Code First CTP 5存储图像?

    我只是想弄清楚是否有一种简单的方法可以使用 EF Code First CTP 5 存储和检索二进制 文件 数据 我真的很希望它使用 FILESTREAM 类型 但我真的只是在寻找某种方法让它工作 我总是创建另一个类 例如ProductIm
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS
  • NHibernate:无状态会话错误消息无法获取代理

    我正在使用 nHibernate 无状态会话来获取对象 更新一个属性并将对象保存回数据库 我不断收到错误消息 无状态会话无法获取代理 我在其他地方有类似的代码 所以我不明白为什么这不起作用 有谁知道问题可能是什么 我正在尝试更新Screen

随机推荐

  • 括号:如何使自动完成/自动缩进工作?

    括号看起来不错 但我在使用它时遇到两个问题 First 我通常这样自动完成标签 div class PRESS TAB becomes div class class div 我无法实现这一点 我尝试下载一堆插件 但没有任何作用 Secon
  • 使用 ActiveMQ/Stomp 在 PHP 和 Java 之间进行通信

    背景 我有两个服务需要通过消息队列相互通信 一种是用 PHP 编写的遗留服务 另一种是用 Java 编写的 迟早 PHP 服务将被 Java 重写 它们当前相互通信的方式是写入共享数据库 由其他服务轮询 这就是我试图摆脱并用消息队列替换的内
  • 仅限 AJAX 的 Javascript 库

    我正在寻找一个只有 AJAX 没有其他功能的 Javascript 库 例如一个小型的简单 XMLHttp 包装器 微贾克斯 http code google com p microajax 这是我决定的
  • 如何让 Material-UI 选项卡与 React-router 一起使用?

    我正在尝试让 Material UI 选项卡与路由一起使用 当路由正在工作并显示所选选项卡时 选项卡之间导航的流畅动画不再起作用 如何将 React Router 与 Material UI 选项卡一起使用 以保持选项卡动画正常工作 截至目
  • 最快重合矩阵

    我有两个数组 我想计算一个巧合列表 数组 即所有索引 i j 的列表 使得 a i b j 这是我现在的代码 b np array 3 5 6 4 a np array 1 2 3 4 np array i j for i in range
  • 如何获取每个权限的保护级别?

    我试图列出所选应用程序中每个权限的保护级别 对于下面给出的代码 但我不知道如何完成它 ArrayList
  • 根据另一个依赖项的版本使用不同的代码

    以下情况 库 X 由我维护 依赖于库 Y 版本 2 0 对于库 Y 存在较新的主要版本 3 该版本通常更好 将基于 Y 2 构建的代码升级到 Y 3 非常简单 但仍然需要对现有代码进行一些调整 Y 是 X 的依赖项 因此升级它会迫使 X 的
  • 还有人知道这是什么意思吗?

    static final boolean assertionsDisabled java util TaskQueue desiredAssertionStatus 在源文件中看到的java util TaskQueue java Quot
  • Kotlin:公共获取私有设置变量

    在 kotlin 中定义具有公共 getter 和私有 仅内部可修改 setter 的 var 的正确方法是什么 var setterVisibility String abc Initializer required not a null
  • 该证书的颁发者无效:钥匙串将所有证书标记为“无效颁发者”[重复]

    这个问题在这里已经有答案了 钥匙串突然将我的钥匙串中的所有证书显示为无效 因为它在 2 天前工作 我还检查了开发人员门户 它在那里显示有效 它将钥匙串中的每个证书标记为 该证书的颁发者无效 正如消息表明 这一定是发行人方面的问题 而我们的发
  • InternalResourceViewResolver 与 UrlBasedViewResolver 有何不同

    我刚刚开始使用Spring 我遇到了很多教程 我看到了更多使用的例子InternalResourceViewResolver than UrlBasedViewResolver 我查看了 Spring 文档 但我无法弄清楚使用其中之一的好处
  • 尝试使用 FragmentActivity 时无法访问 ActivityCompat Api 23

    我尝试在我的智能手表上使用 ViewPager 但在尝试重建 运行 调试我的应用程序时不断收到错误 我正在使用 FragmentActivity 这就是发生错误的地方 我搜索了 stackoverflow 和教程网站来看看可能是什么问题 很
  • 为什么没有“国外进口原药不安全”?

    这是我之前问题的后续here https stackoverflow com questions 41213378 using foreign import prim with a c function using stg calling
  • 在现有的 Ruby on Rails 应用程序中创建博客

    我有兴趣向我的 Ruby on Rails 应用程序添加博客 我不想浪费时间在 Rails 中编写 bloggin 应用程序 我可以做到 但我只是更喜欢更强大的东西 我研究过 Wordpress 它似乎是最好的博客平台之一 我的问题是如何将
  • 实体框架返回旧数据

    我遇到了 EF 无法在 3 层 WPF 应用程序中返回最新数据的问题 我怀疑这与我处理上下文生命周期的方式有关 这是场景 UnitOfWork 内包含多个存储库 还有一项服务 MyService 它使用 UnitOfWork 此 UnitO
  • 使用朴素贝叶斯分类器对推文进行分类:一些问题

    除了其他来源之外 我还使用 Stackoverflow 上的各种帖子 尝试实现自己的 PHP 分类器 将推文分为正面 中性和负面类别 在编码之前 我需要理清流程 我的思路和例子如下 p class p words class Bayes t
  • Nemerle 和 F# 在 .Net 上的功能比较

    社区维基问题 根据这个问题 在 Net 中使用 Scala 有什么好处 https stackoverflow com questions 3587499 what are the benefits of using scala in ne
  • ios7中光标可见性问题

    只需创建一个UITextField in ios7 SDK但是当我输入一些内容时 会显示文本UItextField但光标不是 关于可能出现什么问题的任何线索吗 使用光标更改 UITextField 的tintColor mobileText
  • Java 中的重定向 stdin 和 stdout

    我正在尝试重定向 java 中子进程的标准输入和标准输出 最终我会将输出转到 JTextArea 或其他东西 这是我当前的代码 Process cmd Runtime getRuntime exec cmd exe cmd getOutpu
  • C# 映射两个复杂对象

    我有四门课 public class Customer public string FirstName get set public string LastName get set public List