如何将两个IList合并在一起

时间:2015-04-30 15:50:47

标签: c# .net ilist

我有两个IList,它从数据库中的不同表中获取值。这些表包含相同的列和值,但由于其他原因,客户端需要将它们存储在单独的表中。

var interval = 1000; // ms
var expected = Date.now() + interval;
setTimeout(step, interval);
function step() {
    var dt = Date.now() - expected; // the drift (positive for overshooting)
    if (dt > interval) {
        // something really bad happened. Maybe the browser (tab) was inactive?
        // possibly special handling to avoid futile "catch up" run
    }
    … // do what is to be done

    expected += interval;
    setTimeout(step, Math.max(0, interval - dt)); // take into account drift
}

正如你所看到的,他们都得到结果并存储它们,但我现在需要合并/联合这些列表,以便它们可以显示在一个表中。关于如何做到这一点的任何想法

3 个答案:

答案 0 :(得分:1)

好吧,如果你可以为MeterReadingDtoPseudoReadingDto提取一个接口(或者一个基类),那么你可以将它们合并到IEnumerableIList这一点。

public IEnumerable<BaseReadingDto> AllReadings {
  get{
    return MeterReadings.Concat(PseudoReadings);
  }
}

答案 1 :(得分:0)

考虑使用IEnumerable方法扩展Union

注意:使用此操作将导致从结果中删除两个集合之间的重复元素。

答案 2 :(得分:0)

您需要能够将PseudoReadingDtoMeterReadingDto视为同一对象类型。您可以查看匿名类型,但我建议同时实现相同的接口(例如,可能IReadingDto)。然后,您可以创建一个新的List<IReadingDto>并组合列表。

如果他们共享相同的类型,您可以使用List.AddRange()将列表附加在一起。