Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用LINQ选择id对应的名称_C#_.net_Linq_Select_Where - Fatal编程技术网

C# 如何使用LINQ选择id对应的名称

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对象

我有一个类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对象获取代码中提供的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);