如何在满足条件后将更多行附加到Linq列表

时间:2016-08-24 09:41:50

标签: c# linq

我有一个包含项目的列表(假设有1000个项目)。我想从TimeInSecond符合条件的列表中选择数据。

newList = oldList.Where(x => x.TimeInSecond >= 30 && x.TimeInSecond <= 90).ToList();  

// the above query returns 20 items (from 10 to 20)

但是,我需要追加N

中的下一个oldList行数
// This is just an example of what I need, for example 10 next more items
newList = oldList.Where(x => x.TimeInSecond >= 30 && x.TimeInSecond <= 90).GetNextMoreItems(10).ToList() ; 

// the above query returns (20 + 10) 30 items (from 1 to 30)

1 个答案:

答案 0 :(得分:0)

您可以使用联盟 AddRange 将新的10个项目附加到现有列表中。当然,数据类型必须相同。以下是 int 类型的示例:

    List<int> l1 = new List<int>() {1,2,3 };
    List<int> l2 = new List<int>() { 1,4,5,6};
    l1.AddRange(l2); // l1 now contains {1,2,3,1,4,5,6}
    // will remove duplicates  using default Equality Comparer
    var l3 = l1.Union(l2).ToList(); // contains {1,2,3,4,5,6}

以您的示例为例,它可能如下所示:

var list1 = oldList.Where(x => x.TimeInSecond >= 30 && x.TimeInSecond <= 90); 
var list2 = GetNextMoreItems(10).ToList(); 
var finalList = list1.AddRange(list2);

根据评论进行修改 要排除您已选择的项目,可以使用以外的相交。因此,对于上面的 int 示例:

var l4 = l3.Except(l1); // contains {4,5,6}

然后,要选择一定数量的元素,请附加 .Take(count)