【问题标题】:Can a single field from a List<struct> be searched using IndexOf?可以使用 IndexOf 搜索 List<struct> 中的单个字段吗?
【发布时间】:2015-11-24 07:39:02
【问题描述】:

在 C# 中,我有一个 List,其中 someStruct 由一个 String 和一个 int 组成。我希望能够找到匹配特定字符串的条目。是否有类似 IndexOf() 的东西可以做到这一点,还是我必须使用 for 循环并检查每个条目的字符串字段是否匹配?

【问题讨论】:

    标签: c# list struct indexof


    【解决方案1】:

    你可以使用LINQ

    var yourItem = list.FirstOrDefault(entry=>entry.SomeProperty=="SomeValue"); // or list.First
    

    也可以使用List的Find方法:

    var yourItem = list.Find(entry=>entry.SomeProperty=="SomeValue");
    

    【讨论】:

      【解决方案2】:

      您可以通过List&lt;T&gt;FindIndex 方法做到这一点:

      var list = new List<Item>();
      list.Add(new Item { Id = 1, Data = "Test1" });
      list.Add(new Item { Id = 2, Data = "Test2" });
      var index = list.FindIndex(x => x.Id == 2); // Second scenario FindIndex(x=> x.Data == "Test2");
      

      Item 在哪里:

      public struct Item
      {
          public int Id { get; set; }
          public string Data { get; set; }
      }
      

      【讨论】:

        【解决方案3】:

        如果您正在查找字符串并返回 id,则无需使用索引:

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        
        namespace ConsoleApplication1
        {
            class Program
            {
                static void Main(string[] args)
                {
        
                    List<Item> myList = new List<Item>() {
                                          new Item()  {Id = 123, Data = "abc"},
                                          new Item()  {Id = 124, Data = "abd"},
                                          new Item()  {Id = 125, Data = "abe"},
                                          new Item()  {Id = 126, Data = "abf"},
                                          new Item()  {Id = 127, Data = "abg"}
                    };
        
                    int id = myList.Where(x => x.Data == "abe").Select(y => y.Id).FirstOrDefault();
                }
            }
        
            public struct Item
            {
                public int Id { get; set; }
                public string Data { get; set; }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-11
          • 1970-01-01
          相关资源
          最近更新 更多