現在、データベースクエリの結果である2つのリスト(_pumpOneSpmと_pumpTwoSpm)があります。現在、私はLINQを使用してリストにデータを入力し、計算に使用しています。これに似たもの:
var spmOne = _pumpOneSpm.Where((t, i) => _date[i].Equals(date) &&
DateTime.Compare(_time[i], DateTime.Parse(start)) > 0 &&
DateTime.Compare(_time[i], DateTime.Parse(end)) < 0).ToList();
あるリストからデータを取得して特定のデータを別のリストに追加しているので、これは問題ありません。しかし今、私は1つのリストに追加するために2つのリストからデータをプルする必要があります。LINQでこれを行う方法があるのか、それともforループで繰り返す必要があるのか知りたいのですが。これが私がforループで得たものです:
for (var i = 0; i < _pumpOneSpm.Count; i++)
{
if (_date[i].Equals(date))
{
if (DateTime.Compare(_time[i], DateTime.Parse(start)) > 0)
{
if (DateTime.Compare(_time[i], DateTime.Parse(end)) < 0)
{
spmOne.Add(_pumpOneSpm[i]);
spmOne.Add(_pumpTwoSpm[i]);
}
}
}
}
これは機能し、私が望むことを実行します。しかし、私はそれをもう少し効率的かつ高速にしようとしています。各リストの最初のコードブロックと同様の2行を使用できますが、それは2回繰り返していることを意味します。それで、私の質問を繰り返すために、LINQコマンドを使用して2つのリストから同時にデータをプルして別のリストにデータを取り込むことは可能ですか、それともforループを使用する必要がありますか?助けてくれてありがとう。
編集
これらのステップを利用する関数の目的は、_pumpOneSpmと_pumpTwoSpmのMAXを微調整することであることに言及しませんでした。それぞれの最大値ではなく、それらの間の最大値。したがって、最初はそれらを1つのリストに追加し、spmOne.Max()を呼び出すだけでした。しかし、上記のような2つのLINQクエリを使用して、ifステートメントを実行して2つの最大値を比較し、2つのうち大きい方を返します。したがって、技術的には、それらが1つのリストに含まれている必要はありません。含まれていると、処理が簡単になると思いました。