web-dev-qa-db-ja.com

List <int>のintの合計範囲

私はこれは非常に些細なことになると思いますが、それをどうやってやるかはわかりません。 List<int>があり、数値の範囲を合計したい。

私のリストは次のとおりです:

var list = new List<int>()
{
    1, 2, 3, 4
};

最初の3つのオブジェクトの合計を取得するにはどうすればよいですか?結果は6になりました。Enumerable.Rangeを使用してみましたが、動作させることができませんでした。

しないで:

int sum = list[0] + list[1] + list[2];
68
Bali C

TakeSum を使用してこれを実現できます。

var list = new List<int>()
{
    1, 2, 3, 4
};

// 1 + 2 + 3
int sum = list.Take(3).Sum(); // Result: 6

他の場所から始まる範囲を合計する場合は、 Skip を使用できます。

var list = new List<int>()
{
    1, 2, 3, 4
};

// 3 + 4
int sum = list.Skip(2).Take(2).Sum(); // Result: 7

または、 OrderBy または OrderByDescending を使用してリストを並べ替えてから、合計します。

var list = new List<int>()
{
    1, 2, 3, 4
};

// 3 + 4
int sum = list.OrderByDescending(x => x).Take(2).Sum(); // Result: 7

ご覧のとおり、このタスク(または関連タスク)を達成する方法はいくつかあります。 TakeSumSkipOrderByOrderByDescending 詳細についてはドキュメント。

113
James Hill