我有两个列表,我分配这种方式其中之一:如何在某些条件下在linq查询中分配两个列表?
var query = Enumerable.Range(0, 1440).Select((n, index) =>
{
if ((index >= 525 && index <= 544) || (index >= 600 && index <= 749) || (index >= 810 && index <= 1079) || (index >= 1300 && index <= 1439))
return 0;
else if (index >= 1080 && index <= 1299)
return 1;
else if (index >= 545 && index <= 599)
return 3;
else if (index >= 750 && index <= 809)
return 4;
else
return 2;
}).ToList();
我的第二个名单被命名为LST2。我想根据我的第一个列表查询将其分配为“0”或“1”。因此,如果查询是“1”或“2”,则lst2的相同索引和先前索引是“0”值,应该是“1”。如果查询列表是“3”或“4”,则lst2的相同索引和先前的索引是“1”值,应该是“0”。另外,如果查询的第一个指示符的值为“3”或“4”,则lst2的相同指示符应为“0”。例如;
query = {3,3,3,0,0,0,2,2,0,0,0,0,4,4,4,4,0,0,0,0,1,1,1,0,0,2,2,0,0,4,4}
lst2 = {0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}
我该怎么做?
编辑:如果查询的任何指数有3或4的值,lst2的同一个指标必须有0值。如果查询的任何指数具有3或4的值且前面的指数具有0值,则lst2的相同指数必须具有0值。同样地;如果查询的任何指数有1或2的值,lst2的相同指数必须有1个值。如果查询的任何指数具有1或2的值且前面的指数具有0值,则lst2的相同指数必须具有1个值。
该列表中有1440个元素,在您的示例数据('query'和'lst2')中只显示一段摘录,是否正确?一般来说,如果指数(+以前的指数)如此重要,LINQ并不是最好的选择。使用'for'循环。 –
是的。借调。使用for循环,并同时写入两个列表。从延迟执行或任何其他方面来看,linq并没有从中获得太多好处,所以不需要太依附它。 – Chris
这是正确的。 lst2应该有相同的大小,这是一个摘录。我怎样才能说服自己? – 1teamsah