簡體   English   中英

在類型類 c# 的列表中搜索

[英]Search within a list of type class c#

我有一個類,它有一個 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<myData> dta = new List<myData>()
{
    new myData()
    {
        myID = 1,
        mySurname = "tst"
    },
    new myData()
    {
        myID = 1,
        mySurname = "11test2"
    }
};

如果您需要在列表中返回mySurname字段中包含單詞“test”的所有記錄,您可以使用 2 種完全相同的方法來完成:

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();

您可以使用 LINQ

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

由於您提到了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<myData>類型的集合,您還可以編寫:

var list = result.ToList()

或者,如果您需要一個 ArrayList:

var dataFiltered = new ArrayList(result.ToArray());

foreach ( myData item in dataFiltered )

如果您需要進行不區分大小寫的搜索:

不區分大小寫的“包含(字符串)”

您應該使用List<myData>而不是ArrayList

c# 什么時候應該使用List,什么時候應該使用arraylist?

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

輸出

peter 1
peter 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM