在List <object>中查找每个项目在数组中的位置

时间:2019-01-22 22:12:04

标签: c#

我正在拨打Web服务,并取回要添加到列表中的数据。没问题。我的remedyinfo列表中的内容可以通过VS中的断点进行验证。

我似乎无法弄清楚如何在列表中搜索与新变量匹配的值,例如,我想查找incidentID是否等于“ INC000000001”。

我尝试过var foundItem = remedyinfo.Contains("searchvalue"),但它总是返回false

我已经尝试了其他帖子中建议的LINQ查询:

var foundItem = myArray.SingleOrDefault(item => item.intProperty == someValue);

我要注意的是,该示例所指的是比较item.intProperty == somevalue)应该有效,在item.之后我无法获得任何参考,仅建议EqualsGetTypeGetHashCodeToString。因此,例如,我无法引用item.incidentID

非常感谢任何指导。

var remedyinfo = new List<object> { };

remedyinfo.Add(new IncidentItem()
  {
      assignedgroup = assignedgroup,
      incidentID = incidentID,
      submitdate = offsetDate.ToString(),
      priority = priority,
      status = status,
      assignee = assignee,
      summarydesc = summarydesc,
      notes = notes
  });

    [Serializable]
    public class IncidentItem
    {
        public string assignedgroup { get; set; }
        public string incidentID { get; set; }
        public string submitdate { get; set; }
        public string priority { get; set; }
        public string status { get; set; }
        public string assignee { get; set; }
        public string summarydesc { get; set; }
        public string notes { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

要检查列表是否包含项,有不同的选项。您可以在.Net 3.5或更高版本中使用“任意”:

if (remedyinfo.Any(incident => incident.incidentID == "Hello"))
// rest of code

如果您还有另一个IncidentItem,并且希望像这样签入列表

var anotherIncident = new IncidentItem();
if (remedyInfo.Contains(anotherIncident)) 

然后,您必须实现IEquatable类中的Equals或重写HashCodeIncidentItem。 有关Equals和HashCode的更多信息在这里:

Correct way to override Equals() and GetHashCode()