use*_*810 1 c# linq lambda visual-studio-2010
我想创建一个查询,从人员列表(人员)返回特定的人(通过ID).
public Person getThisID(int pID)
{
var res = from p in persons
where p.pID == pID
select p;
return res;
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到了关于投射问题的错误.我试图投射res到人物,但它不适用于此.我该如何解决?
var res= (from p in persons
where p.pID == pID
select p).SingleOrDefault();
return res;
Run Code Online (Sandbox Code Playgroud)
select p; 可能会返回多个结果.
使用.FirstOrDefault()包装您的查询;
var res = (from p in persons
where p.pID==pID
select p).FirstOrDefault();
return res;
Run Code Online (Sandbox Code Playgroud)
null如果没有找到用户,这将返回一个对象,如果找到很多用户,则返回具有该Id的第一个用户.
或者SingleOrDefault(),如果找到多个结果,您可以使用哪个会抛出异常.
无论是SingleOrDefault()和FirstOrDefault()方法支持通过过滤器给他们,让你也可以简化您的查询到1线LAMBDA声明.
return persons.FirstOrDefault(p => p.pID == pID);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |