从对象列表中获取一个对象的属性

从对象列表中获取一个对象的属性

问题描述:

我有一个对象列表,然后我想查找一个对象并显示带有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

侧面说明,'名称“是复数形式,读取一个有点奇怪。更好地使用单数为你的对象,即'名称'。 –

试试这个

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; 

你确实使用First之一,FirstOrDefaultSingleSingleOrDefault dependng您的要求,

我怀疑最合适的是基于事实的ID通常是唯一SingeOrDefault,所以你永远只想到一个单与SingleSingleOrDefault之间的指定ID

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

的不同产品,如果没有找到,后者将返回默认值,前者将thrw错误 - null在一个对象的情况下。

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

如果你不知道的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

感谢您的宝贵意见。 –