如何仅使用LINQ从列表中选择长度不同的部分 [英] How to select sections of differing lengths from list using LINQ only
本文介绍了如何仅使用LINQ从列表中选择长度不同的部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个名为复杂"类型的列表:
I have a List of a type named 'Complex':
List<Complex> list = new List<Complex>();
...
class Complex
{
public string Header { get; set; }
...
...
...
}
列表中有一些重复的标题,这些标题指示新节的开始.每个部分的长度可能不同,如下所示:
There are some repeated headers in list, and these indicate the start of new sections. Each section may be of a different length, as shown below:
start 1 2 3 4 5 6 7 start 1 2 3 start 1 2 3 4 5 6 start 1 start 1 2
我想使用LINQ获得类型为Complex的所有可能的子列表.也就是说,所有带有标题的对象,如下所示:
I would like to get all possible sublists of type Complex using LINQ; that is, all objects with headers, as follows:
- 1 2 3 4 5 6 7
- 1 2 3
- 1 2 3 4 5 6
- 1
- 1 2
如何仅使用LINQ完成此操作?
How can I accomplish this using LINQ only?
列表是在html页面解析过程中创建的
edit: List is created during html page parsing
<tr>
<td>00:00<!--//-00:00--></td>
<td>15:00<!--//-00:00--></td>
<td class="txt_left"><a href="">News</a></td>
<td><a href="/TsV2/TV_Video_On.asp?PROG_CODE=TVCR0114">
<img src="/images/new/sub_new/icon_play01_off.gif" alt="play" class="rollover"/></a></td>
</tr>
<tr>
<td>00:15<!--//-00:00--></td>
<td>15:15<!--//-00:00--></td>
<td class="txt_left">
<a href="Tv_Pagego.asp?PROG_CODE=TVCR0556">Nice one</a></td>
<td><a href="/TV2w/TV_2Video_On.asp?PROG_CODE=TVCR0556"><img src="/images/new/sub_new/icon_play01_off.gif" alt="play" class="rollover"/></a></td>
</tr>
推荐答案
static void Main(string[] args)
{
var seq = new object[] {"start", 1, 2, 3, 4, "start", 1, 2, 3, "start", 1, 2, "start", 1};
var no = 0;
var test = (from i in seq select new {SeqNo = (i.ToString() == "start" ? no++ : no), Item = i}).Where( x => x.Item.ToString() != "start").GroupBy( y => y.SeqNo ).Select( z => z.ToArray()).ToArray();
}
或
var test = (from i in seq
group i by i.ToString() == "start" ? ++no : no into g
select g.Where( gi => gi.ToString() != "start" ).ToArray()
).ToArray()
;
ToArray 语句不是必需的
这篇关于如何仅使用LINQ从列表中选择长度不同的部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文