77

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

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

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

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

行わずに:

int sum = list[0] + list[1] + list[2];
4

2 に答える 2

129

Take&を使用してこれを達成できますSum

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

ご覧のとおり、このタスク(または関連するタスク)を実行する方法はいくつかあります。詳細についてTakeSum、、、、SkipおよびOrderByドキュメントOrderByDescendingを参照してください。

于 2012-04-23T16:08:44.977 に答える
5

または、Linqを使用します

int result = list.Sum();

最初の3つの要素を合計するには:

int result = list.GetRange(0,3).Sum();
于 2020-05-18T10:35:34.380 に答える