2016-12-14 183 views
1

我有一個對象列表,然後我想查找一個對象並顯示帶有ID的屬性值。從對象列表中獲取一個對象的屬性

Names name1 = new Names(){ID=1, User="John"}; 
Names name2 = new Names(){ID=2, User="Mike"}; 
Names name3 = new Names(){ID=3, User="Ben"}; 

這是名單如下這些對象:

List<Names> names; 

現在我想返回用戶名ID爲等於2。我有什麼詢問的時候,我只有對象列表使用?

+3

側面說明,'名稱「是複數形式,讀取一個有點奇怪。更好地使用單數爲你的對象,即'名稱'。 –

回答

2

試試這個

Names name1 = new Names() { ID = 1, User = "John" }; 
Names name2 = new Names() { ID = 2, User = "Mike" }; 
Names name3 = new Names() { ID = 3, User = "Ben" }; 

List<Names> names = new List<Names>(); 
names.Add(name1); 
names.Add(name2); 
names.Add(name3); 

要找到objectid=2

Names obj = names.Where(x => x.ID == 2).FirstOrDefault(); 
int ID = obj.ID; 
string UserName = obj.User; 
6

你確實使用First之一,FirstOrDefaultSingleSingleOrDefault dependng您的要求,

我懷疑最合適的是基於事實的ID通常是唯一SingeOrDefault,所以你永遠只想到一個單與SingleSingleOrDefault之間的指定ID

var item = names.SingleOrDefault(x => x.ID == 2); 
if(item != null){ 
    var name = item.Name; 
} 

的不同產品,如果沒有找到,後者將返回默認值,前者將thrw錯誤 - null在一個對象的情況下。

0
// this will return a list containing all names which are against user ID for example 1, 
// or an empty list if there is no user with ID 1 

var allnames = names.Where(u => u.ID == 1).ToList(); 
1

如果你不知道的LINQ,然後嘗試這個

Names name1 = new Names() { ID = 1, User = "John" }; 
Names name2 = new Names() { ID = 2, User = "Mike" }; 
Names name3 = new Names() { ID = 3, User = "Ben" }; 

List<Names> names = new List<Names>(); 
names.Add(name1); 
names.Add(name2); 
names.Add(name3); 

foreach(var item in names) 
{ 
    if(item.ID == 2) 
    { 
    string strName = item.Name; 
    break; 
    } 
} 
+1

至少在找到它時跳出循環! – Jamiec

+0

感謝您的寶貴意見。 –

相關問題