我有一個列表如下:如何改變整個列表中的某些範圍值使用LINQ
property = Enumerable.Range(0, 999).Select(i => 0).ToList();
所有的值都爲0。我想改變在一些領域內的一些值。例如;
(0,333)=必須是0
(334,666)=必須是1
(667999)=必須是2
有一種方法在LINQ到做到這一點?
在此先感謝。
我有一個列表如下:如何改變整個列表中的某些範圍值使用LINQ
property = Enumerable.Range(0, 999).Select(i => 0).ToList();
所有的值都爲0。我想改變在一些領域內的一些值。例如;
(0,333)=必須是0
(334,666)=必須是1
(667999)=必須是2
有一種方法在LINQ到做到這一點?
在此先感謝。
var query = Enumerable.Range(0, 999).Select((n, index) =>
{
if (index <= 333)
return 0;
else if (index <= 666)
return 1;
else
return 2;
});
您可以使用此擴展方法:
public static class MyExtensions
{
public static void SetRangeValues<T>(this IList<T> source, int start, int end, T value)
{
if (start > 0 && end < source.Count)
{
for (int i = start; i <= end; i++)
{
source[i] = value;
}
}
}
}
用法:
list.SetRangeValues(0,333,0);
list.SetRangeValues(334,666,1);
我認爲你可以使用整數除法伎倆。
var property = Enumerable.Range(0, 999).Select(i => i/333).ToList();
一個簡單的測試用例:
Enumerable.Range(0, 9).Select(x => x/3).ToList().ForEach(Console.WriteLine);
'666/333 = 2',在他的例子中'666 == 1'和'667 == 2' –
謝謝您的回答。那麼,我能否持續發現有多少指標具有相同的價值?例如查詢[0] =查詢[1] =查詢[2] =查詢[3] = 0,查詢[4] = 1,查詢[5] =查詢[6] = 0.前三個索引有0,所以第一個答案是3.最後兩個索引有0,所以第二個答案是2 ..我怎麼能找到這些? – 1teamsah
@ team16sah這聽起來像是一個很好的問題給我。請注意,stackoverflow.com並不真正熱衷於用戶詢問一段代碼。在提出問題之前,請自己嘗試一下,並在問題中顯示。 –