我正在使用linq从整数列表中提取范围:
例如,我希望拆分以下列表:
List<int> numberList = new List<int>() { 30, 60, 90, 120, 150, 180, 270, 300, 330 };
转换成整数范围的列表,如下所示:
{ 30, 180 }
{ 270, 330 }
即:其中下一个seq大于30
另一个例子:
List<int> numberList = new List<int>() { 30, 60, 120, 150, 270, 300, 330 };
转换成整数范围的列表,如下所示:
{ 30, 60 }
{ 120, 150 }
{ 270, 330 }
我尝试过用for循环来找到最好的方法,但是我不知道从哪里开始尝试使用linq查询来做到这一点。
7条答案
按热度按时间rslzwgfq1#
你可以写一个方法来处理分割:
这与所描述的规范匹配,返回:
请注意,集合中没有范围的单个值将被复制。例如,
{ 30, 120, 150 }
将返回:nom7f22z2#
你可以在一个linq语句中做到这一点:
mqkwyuun3#
有很多种方法可以做到这一点,而且都有其优点和缺点。所以这里还有一个解决方案,希望对大家有所帮助。
示例用法:
此外,您不仅可以拆分整数,还可以拆分单词的第一个字母。或
DateTime
/TimeSpan
。或者随便你怎么说。c0vxltue4#
必须使用LINQ吗?如果不是,那么:
kmb7vmvb5#
您可以使用
TakeWhile
并将结果添加到另一个列表中最后,
numberList
将为空,output
将是列表的列表。当前代码将要求列表中至少有一个元素,如果您有
它将作为两个列表返回,每个列表中有一个元素
13z8s7eq6#
试试这个:
样品使用:
g0czyy6m7#