0

我有一个包含以下字段的集合列表

  1. 日期1
  2. 极值
  3. Y值

我想在这个列表中搜索另一个日期列表。对于第二个列表中的每个日期,我想获取从这个最小日期到下一个日期之间的记录(距最小日期 30 分钟)。

foreach (var item in selectedDates.Where(x => x.Checked))
{
     // item.minDate is my starting date
     // I want all records between item.minDate and 30 minutes added to it)               
     var t = lf.ReplicateBlocks.FindAll(o=> o.minimumCompletionDate >= item.
}

**UPDATE**

  public class ReplicateBlock
    {
        public int ReplicateId { get; set; }
        public string AssayNumber { get; set; }
        public DateTime InitiationDate { get; set; }
        public DateTime InitiationTime { get; set; }
        public DateTime minimumCompletionDate { get; set; }
        public DateTime minimumCompletionTime { get; set; }
        public string correctedCount { get; set; }
        public string moduleName { get; set; }
        public string exception { get; set; }
    }


public class RunLogEntryDatesDisplay
{
    public DateTime runDate { get; set; }
    public String DateRange { get; set; }
    public bool Checked { get; set; }
    public string MinimumReplicateId { get; set; }
}

我正在寻找的最终输出是修改后的复制块列表。RunLogEntryDatesDisplay 是从视图发布的复选框列表。在此列表中,我查看已检查的日期,即runDate,从第一个选择开始,我向其添加 30 分钟,并在ReplicateBlock List之间和边缘之间找到所有记录。我将对复选框列表中的每个选定日期执行相同的操作,最后将根据用户选择(选中项)获得最终/过滤的 ReplicateBlockLisr。

4

1 回答 1

2

您可以遍历日期并填充结果列表:

List<ReplicateBlock> blocks = new List<ReplicateBlock>();    
foreach (var item in selectedDates.Where(x => x.Checked))
{
     var t = lf.ReplicateBlocks.Where(o=> 
                 o.minimumCompletionDate >= item.minDate  &&
                 o.minimumCompletionDate <= item.minDate.AddMinutes(30));

     blocks.AddRange(t);
}

您也可以在一个查询中执行此操作:

var query = from d in selectedDates
            from o in lf.ReplicateBlocks
            where d.Checked &&
                  o.minimumCompletionDate >= d.minDate  &&
                  o.minimumCompletionDate <= d.minDate.AddMinutes(30))
            select o; 
于 2013-01-02T21:29:27.740 回答