我有一个对象列表,然后我想找到一个对象并显示带有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的用户名。当我只有对象列表时,我必须使用哪些查询?
答案 0 :(得分:6)
您可以使用First
,FirstOrDefault
,Single
或SingleOrDefault
中的一个来执行此操作,具体取决于您的要求,
我怀疑最合适的是SingeOrDefault
,因为ID通常是唯一的,因此您只需要一个具有指定ID
的单个项目
var item = names.SingleOrDefault(x => x.ID == 2);
if(item != null){
var name = item.Name;
}
Single
和SingleOrDefault
之间的区别在于前者如果找不到则会引发错误,后者将返回默认值 - 对象是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();