从对象列表中获取一个对象的属性
问题描述:
我有一个对象列表,然后我想查找一个对象并显示带有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。我有什么询问的时候,我只有对象列表使用?
答
试试这个
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);
要找到object
与id=2
Names obj = names.Where(x => x.ID == 2).FirstOrDefault();
int ID = obj.ID;
string UserName = obj.User;
答
你确实使用First
之一,FirstOrDefault
,Single
或SingleOrDefault
dependng您的要求,
我怀疑最合适的是基于事实的ID通常是唯一SingeOrDefault
,所以你永远只想到一个单与Single
和SingleOrDefault
之间的指定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
感谢您的宝贵意见。 –
侧面说明,'名称“是复数形式,读取一个有点奇怪。更好地使用单数为你的对象,即'名称'。 –