让我们看看你能不能帮助我。我不太擅长 LINQ,所以我什至不知道这是否可能。实际上,我认为是,但我还没有找到最好的方法。
我有一个具有列表和数据表的对象。此 DataTable 的行数与列表中的项目数相同,并且它们是相关的(列表中的第一项与第一行相关,第二项与第二行相关,依此类推)。我希望能够从 DataTable 中选择一个日期范围及其相关行。我目前正在这样做,但它有一些循环和一个 IndexOf,我需要很长时间来处理。你们对我如何使它更快有什么建议吗?
这基本上是对象的结构(我已经简化了一点,但重要的是这里):
public class CustomObject(){
public List<DateTime> dates { get; set; }
public DataTable table { get; set; }
}
这是我选择它的方式:
private bool SelectRange(DateTime begin, DateTime end, CustomObject custom)
{
var range = from date in custom.dates
where date.CompareTo(begin) >= 0 &&
date.CompareTo(end) < 0
select date;
DataTable tmpTable = custom.table.Copy(); // I'm doing this just to copy the structure of the DataTable
tmpTable.Clear();
if (range.Count() > 0)
{
List<DataRow> rowList = new List<DataRow>();
foreach (var date in range)
{
int dateIndex = custom.dates.IndexOf(date);
rowList.Add(custom.table.Rows[dateIndex]);
}
foreach (DataRow row in rowList)
{
tmpTable.Rows.Add(row.ItemArray);
}
custom.table = tmpTable;
}
else
{
custom.table.Rows.Clear();
}
}
您对如何优化它有任何想法吗?
非常感谢您的关注。任何想法都将受到欢迎(也欢迎对我的非母语英语进行更正)。