C#按字符串删除列表中的项目

时间:2017-02-09 18:59:53

标签: c#

我正在学习C#,而我遇到的一个问题就是按字符串搜索列表中的项目。它一直给出错误,我不知道如何解决这个问题。我一直在网上搜索,但找不到合适的解决方案。可能是我误解了答案,我希望能以这种方式得到解决方案。

 bl = bn.Vind("JA");
 Test(bl.Count == 2, "2 bezettingen voor passagier met tekst 'JA' in zijn naam.");



    public List<Bezetting> Vind(string v)
    {
        for (int i = 0; i < _items.Count; i++)
        {
            if (_items.Contains(v)) -- Argument1: cannot convert from 'string' to 'ClassLibrary.Bezettingen'
                return _items;
        }
    }        
}

希望这可以让我继续前进。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您正在查看.Contains(...)对象上的List<>。这将尝试将v的值与包含列表的项目进行比较。如果列表不是字符串,则无效。如果它们是字符串,它将比较整个项目而不是项目。

你想要这样的东西......(第一场比赛)

return _items.FirstOrDefault(i=>i.YourProperty.Contains(v));

......或者......(所有匹配都匹配)

return _items.Where(i=>i.YourProperty.Contains(v)).ToList();

答案 1 :(得分:0)

我真的不明白你在你的方法中做了什么,这非常令人困惑,但是既然你付出了努力,我就会给你一个解决方案。

用于搜索List中的字符串,您可能希望以这种方式:

public List<YourModel> Search(string keyword)
{
  //here you should populate your list from database or wherever! for now im just initializing it.  
  List<YourModel> myList = new List<YourModel>();
  //you can have inside validation as well e.g:
  if(myList.Any(x=> x.Contains(keyword)))
  {
    //if you simply want to get First Set of Data
    //return myList.FirstOrDefault(x=> x.Contains(keyword));
    return myList.Where(x=> x.Contains(keyword)).ToList();
  }
  else
    return myList; 
}