我希望得到第一条记录,我意识到“Take()将无效。
所以我有一个查询另一个列表的列表
List<string> etchList = new List<string>();
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<Parse>();
}
public Parse Key { get; set; }
public Parse Pla { get; set; }
public Parse Angle { get; set; }
public Parse Default { get; set; }
public List<Parse> 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; }
}
然后这个列表
var AddPlas = new List<AddPla>();
答案 0 :(得分:11)
我认为它不像First()
那么简单吗?
如果您希望查询不会返回任何结果,请使用FirstOrDefault()
<强>更新强>
如果您要求的是“从每个Shapes
获取第一个AddPla
”,请将First
添加到您的select
语句中,而不是最后
select new { EtchVectors = vio.Shapes.First() }
答案 1 :(得分:5)
您可以尝试使用FirstOrDefault。
var query = (from vio in AddPlas
where etchList.Any(vioID => vio.Key.Formatted.Equals(vioID))
select new
{
EtchVectors = vio.Shapes
}).FirstOrDefault();
答案 2 :(得分:0)
使用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() });