簡體   English   中英

如何從列表中刪除項目內容?

[英]How to remove an item content from a list?

我使用逗號分隔字符串的字符串拆分機制,並使用foreach循環循環每個項目,因此,如果我想刪除項目,該怎么辦?

string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','}; 
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in lyrsct1)
{
    if()
        {
         .........i need to remove from here.....
        }                 
}

我想刪除if循環內的項目。

foreach (var item in lyrsct1)    
{    
      if (//item's condition)
      {
         lyrsct1.Remove(item );        
      }                   
}

鑒於您有采取行動的條件,這將是我刪除項目的解決方案。

我正在從列表中刪除“ 7”。

    var condition = "7";
    string lists = "1,2,3,4,5,6,7,7,8,9";
    var delimiter = new[] {','};
    var splitlist = lists.Split(delimiter,StringSplitOptions.RemoveEmptyEntries).ToList();
    var newList = new List<string>();

   foreach (var item in splitlist.Where(x => !x.Equals(condition)))
        {
            newList.Add(item);
        }
   OR

   var newList = splitlist.Where(x => !x.Equals(condition)).ToList();

嘗試這個

var result = new List<string>();
foreach (var item in lyrsct1.Where(x => !x.Contains("example text"))) // you can also compare values here instead of contains or !Contains (not contains)
{    
    result.Add(item);
}

要么

var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
              .Where(x => !x.Contains("example text")).ToList();

您不能修改數組。 您必須將lyrsct1轉換為list。

同樣,在迭代循環時,您無法在foreach循環內修改集合。 所以用for循環代替

        string lyrsct = drow1["lyricist"].ToString();
        var delimiters = new[] { ',' };
        var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).ToList(); // List is modifiable.
        for (int i = 0; i < lyrsct1.Length; i++)
        {
            var item = lyrsct1[i];
            if ()
            { 
                int indexToRemove = something; // index of item that should be removed
                lyrsct1.Remove(indexToRemove);
                if(indexToRemove <= i) i--; // correct the indexing
            }
        }

從這個答案:

foreach語句用於遍歷集合以獲取所需的信息,但不能用於在源集合中添加或刪除項目,以避免不可預期的副作用。 如果需要在源集合中添加或刪除項目,請使用for循環。

另外看看: 集合被修改了。 枚舉操作可能無法執行

篩選出某些元素的最簡單方法是在LINQ方法中使用。 我假設您希望得到一個字符串數組作為結果:

string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','}; 
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
    .Where(item => !condition(item).ToArray();

您可以創建一個僅包含過濾元素的新List

string lyrsct = drow1["lyricist"].ToString();
var delimiters = new[] {','}; 
var lyrsct1 = lyrsct.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

List<string> newList = new List<string>(lyrcst1.Where(elem => !predicate(elem)));

檢查采用IEnumerable<T>的構造函數: https : //msdn.microsoft.com/zh-cn/library/fkbw11z0.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM