Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按每个对象的成员对对象列表进行排序? 类烛光 { 公共日期时间日期{get;set;} 公共双开{get;set;} 公共双高{get;set;} 公共双低位{get;set;} 公共双关闭{get;set;} } 列表烛光列表=新列表();_C#_List_Sorting - Fatal编程技术网

C# 如何按每个对象的成员对对象列表进行排序? 类烛光 { 公共日期时间日期{get;set;} 公共双开{get;set;} 公共双高{get;set;} 公共双低位{get;set;} 公共双关闭{get;set;} } 列表烛光列表=新列表();

C# 如何按每个对象的成员对对象列表进行排序? 类烛光 { 公共日期时间日期{get;set;} 公共双开{get;set;} 公共双高{get;set;} 公共双低位{get;set;} 公共双关闭{get;set;} } 列表烛光列表=新列表();,c#,list,sorting,C#,List,Sorting,假设我在烛台上加了很多蜡烛,我怎么能按日期对烛台进行排序呢 另外,如何从烛光列表中删除所有重复条目 谢谢你非常标准、简单的linq class candle { public DateTime date { get; set; } public double open { get; set; } public double high { get; set; } public double low { get; set; } public double cl

假设我在烛台上加了很多蜡烛,我怎么能按日期对烛台进行排序呢

另外,如何从烛光列表中删除所有重复条目


谢谢你

非常标准、简单的linq

class candle
{
    public DateTime date { get; set; }
    public double open { get; set; }
    public double high { get; set; }
    public double low { get; set; }
    public double close { get; set; }     
}
List<candle> candleList = new List<candle>();
正如下面提到的,这只会删除列表中的重复实例,而不会删除所有属性值相同的实例

您可以实现自己的
IEqualityComparer
作为通过此测试的选项

您可能希望查看msdn,并了解Linq和可枚举方法:

然后我如何按日期对烛光列表进行排序

另外,如何从烛光列表中删除所有重复条目

您应该告诉我们如何比较两个
candle
对象。假设在日期之前,您可以执行以下操作:

var orderedList = candleList.OrderBy(p=>p.date);
var orderList = candleList.SortBy((x, y) => x.date.CompareTo(y.date) );

此外,您可以使用
Distinct()
或为此方法引入
IEqualityComparer
,以比较两个candle对象并删除重复项。

如果您使用的是.NET 3.5及更高版本,则可以在IList上使用OrderBy扩展,如下所示:

var uniqueList = candleList.GroupBy(p=>p.date).Where(p=>p.Count() == 1).ToList();
您可以使用SortBy

var orderList = candleList.OrderBy(s => s.date);
要删除重复项,可以执行以下操作:

var orderedList = candleList.OrderBy(p=>p.date);
var orderList = candleList.SortBy((x, y) => x.date.CompareTo(y.date) );
最后要再次获得列表吗

var distinctList = orderList.GroupBy(x => x.date).Select(grp => grp.First());
以流畅的方式:

var finalList = distinctList.ToList();
List finalList=candleList.OrderBy(s=>s.date.Distinct().ToList();

顺便说一句,stackoverflow中还有很多其他问题可以解释这些问题,搜索它们,您会找到其他详细信息。

candleList.OrderBy(x=>x.date)
:)两个相关问题:1)您想对列表本身排序还是迭代排序后的输出?2)如何考虑两个<代码>蜡烛>代码>实例相等?<代码>区别< /代码>在类中只做引用相等,而不做任何属性值。此外,这种排序不合适,它会生成一个
IEnumerable
@AdamHouldsworth,您的观点非常有效和相关。但这并不意味着我的答案是错误的(这是对选民的)。我已经提供了更多的信息。我注意到了,而且我不是选民。