gpt4 book ai didi

c# - 是否可以定义类型在 OrderBy 标准中的使用方式

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:02 25 4
gpt4 key购买 nike

我有以下类型:

public class Type1
{
public Int32 ID { get; set; }
public Decimal Value { get; get; }
}

public class Type2
{
public Int32 ID { get; set; }
public Type1 Type1 { get; set; }
}

我还有以下功能:

List<Type2> GetOrderedType2List()    
{
...
return type2List.OrderBy(type2 => type2.Type1).ToList();
}

我希望 Type2 列表的实例根据 Type1.Value 值按其 Type1 属性排序。但是,我想在 Type1 中编写代码,指定如何在 OrderBy 条件中使用 Type1

这可能吗?

感谢您的帮助。

最佳答案

您需要像这样实现 IComparable:

public class Type1 : IComparable
{
public Int32 ID { get; set; }
public Decimal Value { get; set; }

public int CompareTo(object obj) {
var castObj = obj as Type1;
if (castObj == null)
return -1;
return Value.CompareTo(castObj.Value);
}
}

测试:

var list = new List<Type2> { 
new Type2 { Type1 = new Type1 { Value = 50 } },
new Type2 { Type1 = new Type1 { Value = 2 } },
new Type2 { Type1 = new Type1 { Value = 100 } },
new Type2 { Type1 = new Type1 { Value = -10 } }
};

list.OrderBy(type2 => type2.Type1);

给出结果:

-10, 2, 50, 100

或者,您可以选择仅与其他 Type1 对象进行比较(可能是最好的方法),并且可以这样做:

public class Type1 : IComparable<Type1>
{
public Int32 ID { get; set; }
public Decimal Value { get; set; }

public int CompareTo(Type1 obj) {
if (obj == null)
return -1;
return Value.CompareTo(obj.Value);
}
}

关于c# - 是否可以定义类型在 OrderBy 标准中的使用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com