相关疑难解决方法(0)

比较c#中的对象属性

这就是我在许多其他类继承的类中作为方法提出的.这个想法是它允许在相同类型的对象的属性之间进行简单比较.

现在,这确实有效 - 但为了提高我的代码质量,我想我会把它扔出去仔细检查.它怎么能更好/更有效/等等?

/// <summary>
/// Compare property values (as strings)
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public bool PropertiesEqual(object comparisonObject)
{

    Type sourceType = this.GetType();
    Type destinationType = comparisonObject.GetType();

    if (sourceType == destinationType)
    {
        PropertyInfo[] sourceProperties = sourceType.GetProperties();
        foreach (PropertyInfo pi in sourceProperties)
        {
            if ((sourceType.GetProperty(pi.Name).GetValue(this, null) == null && destinationType.GetProperty(pi.Name).GetValue(comparisonObject, null) == null))
            {
                // if both are null, don't try to compare  (throws exception)
            }
            else if (!(sourceType.GetProperty(pi.Name).GetValue(this, null).ToString() == destinationType.GetProperty(pi.Name).GetValue(comparisonObject, null).ToString()))
            {
                // only …
Run Code Online (Sandbox Code Playgroud)

c# comparison properties object

111
推荐指数
5
解决办法
15万
查看次数

如何快速检查两个数据传输对象在C#中是否具有相同的属性?

我有这些数据传输对象:

public class Report 
{
    public int Id { get; set; }
    public int ProjectId { get; set; }
    //and so on for many, many properties.
}
Run Code Online (Sandbox Code Playgroud)

我不想写

public bool areEqual(Report a, Report b)
{
    if (a.Id != b.Id) return false;
    if (a.ProjectId != b.ProjectId) return false;
    //Repeat ad nauseum
    return true;
}
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来测试两个只有属性的对象是否具有相同的值(每个属性不需要一行代码或一个逻辑表达式?)

切换到结构不是一种选择.

c# equals dto

26
推荐指数
2
解决办法
7560
查看次数

比较2个对象并检索具有不同值的字段列表

给定一个具有35个字段的类和2个具有一定数量的不同字段值的对象.是否有一种聪明的方法来获取列表<String>以及对象如下所示的字段名称?

例如

obj1.Name = "aaa";
obj1.LastName = "bbb";
obj1.Address = "xcs";
obj2.Name = "aaa";
obj2.LastName = "ccc";
obj2.Address = "jk";
Run Code Online (Sandbox Code Playgroud)

目的:

list<<String>String> containing 2 Strings LastName and Address
Run Code Online (Sandbox Code Playgroud)

我认为反射是要走的路,但是35场,恐怕太重了.还有其他想法,比如linq?

c# linq

12
推荐指数
2
解决办法
5301
查看次数

标签 统计

c# ×3

comparison ×1

dto ×1

equals ×1

linq ×1

object ×1

properties ×1