[英]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.