C# 用双重属性改进数据结构

C# 用双重属性改进数据结构,c#,data-structures,C#,Data Structures,我有一个数据结构,其中大多数属性都是来自另一个表的相同内容。我有Component1,Code1,Description1和Argument1,我有相同的东西,但来自不同的表(Component2,Code2,Description2和Argument2)。此属性可以相同,也不必相同第一个表中是新导入的数据,第二个表中是旧数据。现在,我需要比较这些数据,并根据一些逻辑来选择一个或另一个基础。我需要这个数据结构的一个重要原因是,我需要检查Code1是否等于Code2(参数、组件和描述都相同) 我觉

我有一个数据结构,其中大多数属性都是来自另一个表的相同内容。我有Component1,Code1,Description1和Argument1,我有相同的东西,但来自不同的表(Component2,Code2,Description2和Argument2)。此属性可以相同,也不必相同
第一个表中是新导入的数据,第二个表中是旧数据。现在,我需要比较这些数据,并根据一些逻辑来选择一个或另一个基础。我需要这个数据结构的一个重要原因是,我需要检查Code1是否等于Code2(参数、组件和描述都相同)

我觉得一定有更好的方法来做到这一点。我不喜欢两次拥有这么多“相同”的属性。我计划有一个列表,我不是只有一个对象,而是一个很长的对象列表。有什么想法吗?
谢谢你的帮助

如果我是你,我会创建一个表示一对对象的新类:

public class Pair<T>
{
    public T Item1 { get; set; }
    public T Item2 { get; set; }
}
这本身就让代码更具可读性,这是一件好事。但是,您可以将额外的实用程序成员添加到
类中,例如
ItemsAreEqual
,这将帮助您防止代码重复


更新:作为创建
类的替代方法,请查看现有的。

如果我是您,我将创建一个表示一对对象的新类:

public class Pair<T>
{
    public T Item1 { get; set; }
    public T Item2 { get; set; }
}
这本身就让代码更具可读性,这是一件好事。但是,您可以将额外的实用程序成员添加到
类中,例如
ItemsAreEqual
,这将帮助您防止代码重复


更新:作为创建
类的替代方法,请查看已经存在的类。

您正在尝试缩短不一定可以或不需要缩短的内容。你的论点是所有字段都可以有单独的值,并且都需要比较它们,实际上告诉我们所有这些字段都需要存在

为了使其更加优化,您可以添加第二个类
Data
,您将在类中引用该类:

public class Data
{
    private int Component { get; set; }
    private string Code { get; set; }
    private string Description { get; set; }
    private string Argument { get; set; }
}
和原始类:

public class ImportData
{
    private int id { get; set; }

    private Data Left { get; set; }
    private Data Right { get; set; }

    private bool IsValid { get; set; }
}

一个好处是,您可以在
数据
类中导出
等于
,这样您就可以轻松地比较两者以检查它们的相等性。

您正在尝试将不一定可以或不必更短的东西缩短。你的论点是所有字段都可以有单独的值,并且都需要比较它们,实际上告诉我们所有这些字段都需要存在

为了使其更加优化,您可以添加第二个类
Data
,您将在类中引用该类:

public class Data
{
    private int Component { get; set; }
    private string Code { get; set; }
    private string Description { get; set; }
    private string Argument { get; set; }
}
和原始类:

public class ImportData
{
    private int id { get; set; }

    private Data Left { get; set; }
    private Data Right { get; set; }

    private bool IsValid { get; set; }
}

一个好处是,您可以在
数据
类中派生
Equals
,因此您可以轻松地比较这两个类以检查它们的相等性。

您可以一次性创建具有属性的类并实现接口

public class Data : IComparable
{
    public int Component { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public string Argument { get; set; } 

    public int CompareTo(object obj) {
        var other = obj as Data;
        if(other == null)
        {
            throw new ArgumentException("Object is not Data");
        }
        else
        {
            //compare current instance to other here...
        }
    }
}

您可以一次性创建具有属性的类并实现接口

public class Data : IComparable
{
    public int Component { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public string Argument { get; set; } 

    public int CompareTo(object obj) {
        var other = obj as Data;
        if(other == null)
        {
            throw new ArgumentException("Object is not Data");
        }
        else
        {
            //compare current instance to other here...
        }
    }
}

不,类型是一样的。但价值可以是,但不一定要相同。我更新了我的问题。不,类型相同。但价值可以是,但不一定要相同。我更新了我的问题。