簡體   English   中英

檢查對象列表是否包含具有特定值的屬性

[英]Checking if a list of objects contains a property with a specific value

說我有以下代碼:

class SampleClass
{
    public int Id {get; set;}
    public int Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";

所以我的問題是我可以使用哪個List函數從myList僅提取具有與我的nameToExtract字符串匹配的Name屬性的對象。

如果這個問題非常簡單/明顯,我會提前道歉。

您可以使用Enumerable.Where擴展方法:

var matches = myList.Where(p => p.Name == nameToExtract);

返回IEnumerable<SampleClass> 假設您想要一個已過濾的List ,只需在上面調用.ToList()即可。


順便說一句,如果我今天編寫上面的代碼,考慮到Unicode字符串處理的復雜性,我會以不同的方式進行相等性檢查:

var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));

也可以看看

myList.Where(item=>item.Name == nameToExtract)
using System.Linq;    
list.Where(x=> x.Name == nameToExtract);

編輯:誤讀問題(現在所有匹配)

除了建議LINQ的其他答案之外,在這種情況下另一種選擇是使用FindAll實例方法:

List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);

你應該看一下Reflection API。 這是一個元命名空間,包含有關類本身的信息。 您可以詢問接口繼承和所有內容。

http://msdn.microsoft.com/en-us/library/z919e8tw%28v=vs.80%29.aspx

暫無
暫無

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

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