【问题标题】:Search for an object list搜索对象列表
【发布时间】:2014-05-19 04:56:39
【问题描述】:

我有这样的课。

       class man    
      {
        public string name { get; set; }
        public string mail { get; set; }
       }

我有一个这样的列表

List<man> ppl = new List<man>();

我想在列表中搜索一个名为“Nimal”的人并删​​除该人。怎么做?

【问题讨论】:

  • 如果有多个名为“Nimal”的人会怎样?是否应该删除所有“Nimal”?首先?最后?那时你应该去第二个标准吗?

标签: c# list class object


【解决方案1】:

List.RemoveAll Method 怎么样

删除所有符合定义的条件的元素 指定谓词。

arts.RemoveAll(x => x.name == "Nimal");

【讨论】:

  • 与请求略有不同,因为这会删除所有出现但 OP 说要删除“a”(即大概是第一个);)
  • @astander 谢谢 if 条件怎么办?
【解决方案2】:

如果要删除列表中的第一个:

if(arts.Any(x => x.name == "Nimal"))
{
arts.Remove(arts.FirstOrDefault(x => x.name == "Nimal"));
}

如果你想删除所有匹配条件的条目,你可以这样做:

if(arts.Any(x => x.name == "Nimal"))
{
arts.RemoveAll(x => x.name == "Nimal");
}

【讨论】:

    【解决方案3】:
    var Filtered= ppl.FirstOrDefault(a => a.Name == "Nimal");
    var finalresult= ppl.Except(Filtered).ToList();
    

    【讨论】:

      【解决方案4】:

      如果您想要名称的第一次出现,请查看@astander 答案:

       var firstMatch = ppl.First (p => p.Name == "Nimal");
       ppl.Remove (firstMatch);
      

      如果您更喜欢for 循环和if-condition,您可以这样做:

      for (int i = 0; i < ppl.Count; i++)
      {
            man m = ppl[i] as man;
      
            if(m.Name.ToLower() == "nimal")
                ppl.Remove(m);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-14
        • 2011-03-10
        • 2011-07-08
        • 2010-09-27
        • 2012-06-20
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        相关资源
        最近更新 更多