C# 如何使用LINQ选择id对应的名称
我有一个类points.cs,其成员包括:C# 如何使用LINQ选择id对应的名称,c#,.net,linq,select,where,C#,.net,Linq,Select,Where,我有一个类points.cs,其成员包括: public class Points { public int Id = 0; public string Name { get; set; } } I have a list of these points like this `List<Points> list= new List<Points>();` 我需要做的是使用LINQ query from list对象
public class Points
{
public int Id = 0;
public string Name { get; set; }
}
I have a list of these points like this `List<Points> list= new List<Points>();`
我需要做的是使用LINQ query from list对象获取代码中提供的id号对应的名称
我尝试的明显错误的操作系统是:
string nameFetchedId=list.Select(Name).Where(obj=>obj.Id=2) //result returned will be "def"
请纠正我,我的LINQ不好?应该是这样的
string nameFetchedId=list.SingleOrDefault(obj=>obj.Id==2)?.Name;
首先找到对象,然后选择其名称:问候您可能希望使用lambda表达式执行以下操作:
string strName = list.where( x => x.id == 2).SingleOrDefault()?.Name;
Goodluck您的查询需要:
string name = list.SingleOrDefault(obj => obj.Id == 2)?.Name; // ?. will prevent the code from throwing a null-reference exception and will return null when a point with Id = 2 does not exist
选择第一个条件,如果未找到,则返回null
list.SingleOrDefault(obj=>obj.Id == 2);
list.FirstOrDefault(obj=>obj.Id == 2);
在c 6中使用,这样您就不必检查是否找到该项
list.SingleOrDefault(obj=>obj.Id == 2)?.Name;
list.FirstOrDefault(obj=>obj.Id == 2)?.Name;
这将返回null或Name值
选择第一个条件,如果未找到,则抛出异常
list.Single(obj=>obj.Id == 2);
list.First(obj=>obj.Id == 2);
有了这个,使用起来很安全
list.Singleobj=>obj.Id==2.Name;
list.Firstobj=>obj.Id==2.Name;
除非名称为null,否则不会得到null,这只是一个例外
如果您使用某种LINQ到数据服务器EF、NH、Mongo,那么在执行内存查询时,某些解决方案的行为会有点不同
如需有关Single vs First的详细信息,请签出list.Singleo=>o.Id==2.Name?@David如果list为空,此代码将引发异常。@Lepijohnny:正确。有各种各样的方法来处理这个问题,这取决于这对被调用的业务逻辑意味着什么。这超出了问题的范围。@David同意你的观点,这只是一个观察。注意空引用。
list.Single(obj=>obj.Id == 2);
list.First(obj=>obj.Id == 2);