2
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>();

多くのろうそくをcandeListに追加したと仮定すると、どうすればcandeListを日付でソートできますか?

また、candleList からすべての重複エントリを削除するにはどうすればよいですか?

ありがとうございました

4

3 に答える 3

4

かなり標準的でシンプルな linq。

var candleList = candleList.Distinct().OrderBy(x => x.date).ToList();

Adam が以下で述べたように、これはリスト内の重複したインスタンスのみを削除し、すべて同じプロパティ値のインスタンスは削除しません。

IEqualityComparer<Candle>これを渡すためのオプションとして、 独自のものを実装できます。IEqualityComparer

msdn を見て、Linq と列挙可能なメソッドを読んでください: MSDN - 列挙可能なメソッド

于 2013-09-23T13:35:18.163 に答える
1

どうすればcandleListを日付でソートできますか?

var orderedList = candleList.OrderBy(p=>p.date);

また、candleList からすべての重複エントリを削除するにはどうすればよいですか?

candle2 つのオブジェクトを比較する方法を教えてください。あなたができると仮定しdateます:

var uniqueList = candleList.GroupBy(p=>p.date).Where(p=>p.Count() == 1).ToList();

また、このメソッドを使用Distinct()または導入しIEqualityComparer<candle>て、2 つのろうそくオブジェクトを比較し、重複を削除することもできます。

于 2013-09-23T13:37:32.347 に答える
1

.NET 3.5 以降を使用している場合は、次のように IList で OrderBy 拡張機能を使用できます。

var orderList = candleList.OrderBy(s => s.date);

代わりに、SortBy を使用できます

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<candle> finalList = candleList.OrderBy(s => s.date).Distinct().ToList();

ちなみに、stackoverflow には、この各質問を説明する他の質問がかなりあります。それらを検索すると、他の詳細が見つかります。

于 2013-09-23T13:38:33.683 に答える