【问题标题】:Search within a list of type class c#在类型类 c# 的列表中搜索
【发布时间】:2020-12-26 23:32:54
【问题描述】:

我有一个类,它有一个 ID 和几列,其中之一是一个字符串。

public class myData
    {
        public Int64 myID { get; set; }
        public string myTitle{ get; set; }
        public string myForename{ get; set; }
        public string mySurname{ get; set; }
    }

列表中有几百万行,我想搜索所有 mySurname 包含特定字符串的行

我开始研究 Contains,但在语法上有点卡住,在类中搜索,我能找到的所有示例都只在字符串类型的简单列表中搜索。

理想情况下,我想获得匹配的完整行,否则,ID 就可以了

【问题讨论】:

  • list.Where(item => item.mySurname.Contains(specificString))?
  • 您是如何将数百万行放入列表中的?与拥有数百万行的列表相比,可能有更好的地方进行搜索。

标签: c# arraylist


【解决方案1】:

假设您有以下列表:

List<myData> dta = new List<myData>()
{
    new myData()
    {
        myID = 1,
        mySurname = "tst"
    },
    new myData()
    {
        myID = 1,
        mySurname = "11test2"
    }
};

如果您需要在列表中返回所有在mySurname 字段中包含单词“test”的记录,您可以通过两种完全相同的方式来完成:

1)

var res = dta.Where(d => d.mySurname.Contains("test")).ToList();
var res2 = (from d in dta
            where d.mySurname.Contains("test")
            select d).ToList();

【讨论】:

    【解决方案2】:

    你可以使用 LINQ

    List<myData> list = new List<myData>();
    myData m = list.Find(s=>s.mySurname==specificString);
    

    【讨论】:

      【解决方案3】:

      由于您提到了arraylist 标签,您可以编写如下查询:

      var data = new ArrayList();
      
      data.Add(new myData { mySurname = "john 1" });
      data.Add(new myData { mySurname = "john 2" });
      data.Add(new myData { mySurname = "peter 1" });
      data.Add(new myData { mySurname = "peter 2" });
      
      var result = from myData item in data
                   where item.mySurname.Contains("peter")
                   select item;
      
      foreach ( var item in result )
        Console.WriteLine(item.mySurname);
      

      要拥有List&lt;myData&gt; 类型的集合,您还可以这样写:

      var list = result.ToList()
      

      或者如果你需要一个 ArrayList:

      var dataFiltered = new ArrayList(result.ToArray());
      
      foreach ( myData item in dataFiltered )
      

      如果您需要进行不区分大小写的搜索:

      Case insensitive 'Contains(string)'

      您应该使用List&lt;myData&gt; 而不是ArrayList

      c# When should I use List and when should I use arraylist?

      https://docs.microsoft.com/dotnet/api/system.collections.arraylist

      输出

      peter 1
      peter 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-20
        • 1970-01-01
        • 2011-02-23
        • 2012-03-31
        • 2023-03-15
        • 2017-01-28
        • 2014-11-19
        相关资源
        最近更新 更多