问题是如何从List获取具有其字段值的对象
private List<F_object> f_objects;
我还有一个有一些价值的字符串:
string name = "something";
public string GetName() { return this.name; }
是否有内置的方法来比较列表中的对象与此字段值?或者我应该做一个循环并比较如下:
foreach(F_object ob in f_objects) { if String.Equals(name,ob.GetName()) F_object found = ob; }
解决方法
在linq中有多种方法可以做到这一点.
第一个是使用.Where.如果可以有更多匹配,这将满足您的需求
第一个是使用.Where.如果可以有更多匹配,这将满足您的需求
IEnumerable<F_object> result = f_objects.Where(obj=>obj.GetName() == name);
第二个选项是如果你只关心第一个命中,即使可能有多个,在这种情况下使用.First
f_object result = f_objects.First(obj=>obj.GetName() == name);
或者如果零点击是可接受的情况(非例外)
f_object result = f_objects.FirstOrDefault(Obj=>obj.GetName() == name);
如果你只有一个命中,那么使用.Single
f_object result = f_objects.Single(obj=>obj.GetName() == name);
或者如果你只能有一个或零点击,那么使用.SingleOrDefault
f_object result = f_objects.SingleOrDefault(obj=>obj.GetName() == name);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。