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

时间:2016-12-14 09:26:45

标签: c#

我有一个对象列表,然后我想找到一个对象并显示带有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的用户名。当我只有对象列表时,我必须使用哪些查询?

4 个答案:

答案 0 :(得分:6)

您可以使用FirstFirstOrDefaultSingleSingleOrDefault中的一个来执行此操作,具体取决于您的要求,

我怀疑最合适的是SingeOrDefault,因为ID通常是唯一的,因此您只需要一个具有指定ID的单个项目

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

SingleSingleOrDefault之间的区别在于前者如果找不到则会引发错误,后者将返回默认值 - 对象是null。< / p>

答案 1 :(得分:2)

试试这个

for ( int i:array ; ; )

使用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

答案 2 :(得分: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;
  }
}

答案 3 :(得分: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();