我有兩個列表,我分配這種方式其中之一:如何在某些條件下在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