0

我有 LINQ 查询,它以以下格式返回结果

-- 家长1
 ----儿童
 ------键-aa
 ------价值 - 新
 ----儿童
 ------key - bb
 ------价值 - 旧
 -- 父母2
 ----儿童
 ------key - 抄送
 ------值 - 测试
 ----儿童
 ------键-dd
 ------值 - 测试

我想使用 Linq 在一行中获取子值。目前我可以得到价值,但在两行我不喜欢的代码中

 var firstPoint = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa"))
                            .FirstOrDefault();
 decimal index = firstPoint.Select(d => d.Value)
                           .FirstOrDefault();
4

3 回答 3

2
decimal index = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa"))
    .FirstOrDefault()
    .FirstOrDefault().Value;
于 2012-12-12T17:13:55.280 回答
1
decimal index = SeriesList.SelectMany(p => p.Childs)
                          .FirstOrDefault(c => c.key == "aa").Value;

但请记住,具有提供密钥的孩子应该存在于列表中,否则您将获得异常。我认为最好先找到孩子,然后如果孩子存在,获取它的价值:

Childs child = SeriesList.SelectMany(p => p.Childs)
                          .FirstOrDefault(c => c.key == "aa");
if (child != null)
    index = child.Value;
于 2012-12-12T17:19:41.557 回答
1
var firstPoint = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa")).FirstOrDefault().Value;
于 2012-12-12T17:09:09.127 回答