我有下面的列表以及如何使用LINQ刪除指定索引號的所有元素:刪除所有元素,除了從給定的索引號
List<string> a = new List<string>();
a.Add("number1");
a.Add("number2");
a.Add("number3");
如何刪除所有元素只是除了元件,其索引號= 2使用linq。
我有下面的列表以及如何使用LINQ刪除指定索引號的所有元素:刪除所有元素,除了從給定的索引號
List<string> a = new List<string>();
a.Add("number1");
a.Add("number2");
a.Add("number3");
如何刪除所有元素只是除了元件,其索引號= 2使用linq。
LINQ是不是刪除的東西 - 這是關於查詢。
您可以致電RemoveRange
從列表中刪除一系列項目。所以:
a.RemoveRange(0, 2);
只會留下「number3」。
或者您可以根據dasblinkenlight的答案創建一個新列表。如果您可以告訴我們更多關於您想要實現的目標以及爲什麼您認爲LINQ是解決方案,我們可能會爲您提供更多幫助。
編輯:好的,現在我們有了更清晰的要求,你可以使用LINQ:
var newList = a.Where((value, index) => index != 2)
.ToList();
好sablinkenlights答案是我尋找的,我正在尋找簡單的方法。我正在考慮選擇索引號不相等的元素。例如:我不想選擇索引號爲2的元素,我想選擇索引號爲1和3的元素。但是你是對的,linq不是關於刪除。 –
@MichaelRiva:所以你不*實際試圖從列表中刪除元素?你正在創建一個新的列表?清楚這些事情很重要。而且這聽起來像你試圖濾除元素2,而不是過濾掉所有*但是元素2?你很*不清楚...... –
+1喬恩處理OP的_clarity_。 :) –
「除X以外的所有東西」的等效操作是「保留X」。最簡單的方式做到這一點是在指數2
用一個單一的元素構建一個新的列表,像這樣:
a = new List<string>{a[2]};
呃我怎麼會這麼認爲 –
假設你有你想保留,您可以使用Where
與index
過濾索引列表:
var indexList = new[] {2};
var result = a.Where((s, index) => indexList.Contains(index));
哇很好的回答 –
var result = a.Where((s,index)=> index == 2);'更簡單,但你需要在任何一個之後添加「ToList()」的調用。 – dasblinkenlight
雖然@ dasblinkenlight的答案是更好的選擇,這裏是LINQ(或至少一個迭代)
a.Where((item,index) => b1 == 2);
或返回單個字符串對象,而不是的IEnumberable
a.Where((a1,b1) => b1 == 2).First();
可能的複製[C# - 列表 - 刪除所有的元素,但不是前四個(http://stackoverflow.com/questions/ 10531284/c-sharp-list-remove-all-elements-but-not-the-first-4) – iceDragon