0

我有一个 IGrouping 结构

IGrouping<TierRequest,PingtreeNode>

PingtreeNode 包含 Response 的属性,而 Response 又具有 Result 属性。

    public class PingtreeNode
    {
        public ResponseAdapter Response { get; set;}
        // ... more properties
    }

    public class ResponseAdapter
    {
        public int Result { get; set; }
        // ... more properties
    }

我想要做的是检查 PingtreeNode 是否包含任何具有 Result == 2 的节点。我知道答案包括 SelectMany,但我正在努力获得正确的语法。

有人帮忙吗?

4

2 回答 2

0

因此,假设您想要一个满足您条件的 PingTreeNode 集合,这应该可以解决问题:

var query = yourstruct.SelectMany(x=>x)
  .Where(x => x.Response.Result == 2);
于 2013-09-02T19:58:33.457 回答
0

因为你必须检查

是否PingtreeNode包含任何节点Result == 2

我会使用Any方法:

IGrouping<TierRequest,PingtreeNode> source;

bool anyResultIs2 = source.SelectMany(x => x)
                          .Any(x => x.Response.Result == 2);

它也可以在没有的情况下完成SelectMany

bool anyResultId2 = source.Any(g => g.Any(x => x.Response.Result == 2));

SelectMany并且因为两者Any都是惰性的(一次只返回一个元素,一旦确定结果就结束执行),两种方法的性能应该是相似的。

于 2013-09-02T20:24:31.040 回答