现在,我有 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();
这很好,因为我一直在从一个列表中提取数据以将特定数据添加到另一个列表中。但是现在,我需要从两个列表中提取数据以添加到一个列表中。我很好奇是否有办法用 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]);
}
}
}
}
这有效,并且可以满足我的要求。但我只是想让它更有效率和更快。我可以为每个列表使用类似于第一个代码块的两行,但这意味着我要迭代两次。所以,重申我的问题,是否可以使用 LINQ 命令同时从两个列表中提取数据以填充另一个列表,或者我应该坚持我的 for 循环?感谢您的任何帮助。
编辑
我没有提到,使用这些步骤的函数的目的是微调 _pumpOneSpm 和 _pumpTwoSpm 的 MAX。不是每个的最大值,而是它们之间的最大值。因此,最初我将它们添加到一个列表中,然后调用 spmOne.Max()。但是对于像上面这样的两个 LINQ 查询,我正在运行一个 if 语句来比较两个最大值,然后返回两者中的较大者。所以,从技术上讲,它们不需要在一个列表中,我只是认为如果它们是的话会更容易处理。