从linq查询中获取列表中的第一项

我希望得到第一条记录,我意识到“Take()将不起作用。

所以我有一个查询另一个列表的List

List etchList = new List(); etchList.Add("709"); 

Linq查询是

 var query = (from vio in AddPlas where etchList.Any(vioID => vio.Key.Formatted.Equals(vioID)) select new { EtchVectors = vio.Shapes }).ToList().Take(1); 

现在这个“Take(1)”只有在etchList中有其他数据时才有效,所以它不是我想要的。 结果我看起来像这样:

格式化
“clinesegs”1013.98 5142.96“LYR3_SIG2”
“clinesegs”1020.16 5168.33“LYR3_SIG2”
“clinesegs”967.03 5151.31“LYR3_SIG2”
“clinesegs”971.43 5174.01“LYR3_SIG2”

我希望只能回到列表中的第一行

 "clinesegs" 1013.98 5142.96 "LYR3_SIG2" 

编辑:

好这个代码存在:

 public class AddPla { public AddPla() { Shapes = new List(); } public Parse Key { get; set; } public Parse Pla { get; set; } public Parse Angle { get; set; } public Parse Default { get; set; } public List Shapes { get; set; } public Parse DoubleBrace { get; set; } public Parse Number1 { get; set; } public Parse Number2 { get; set; } } public class Parse { public string Formatted { get; set; } public string Original { get; set; } } 

那么这个List

  var AddPlas = new List(); 

我不认为它和First()一样容易?

如果您希望查询不会返回任何结果,请使用FirstOrDefault()

更新

如果您要求的是“从每个AddPla获取第一个Shapes ”,则将First添加到您的select语句中,而不是在结尾处

 select new { EtchVectors = vio.Shapes.First() } 

您可以尝试使用FirstOrDefault 。

 var query = (from vio in AddPlas where etchList.Any(vioID => vio.Key.Formatted.Equals(vioID)) select new { EtchVectors = vio.Shapes }).FirstOrDefault(); 

使用FistOrDefault方法安全地返回查询中的第一项,如果查询没有返回结果,则返回null

 var result = (from vio in AddPlas where etchList.Any(vioID => vio.Key.Formatted.Equals(vioID)) select new { EtchVectors = vio.Shapes.FistOrDefault() }) 

或者等效地:

 var result = AddPlas.Where(x => etchList.Any(y => x.Key.Formatted.Equals(y))) .Select(x => new { EtchVectors = x.Shapes.FistOrDefault() });