我有一个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是否包含任何结果== 2的节点。我知道答案包含SelectMany,但我很难获得正确的语法。
有人帮忙吗?
答案 0 :(得分:0)
假设您希望PingTreeNode的集合满足您的条件,那么这应该可以解决问题:
var query = yourstruct.SelectMany(x=>x)
.Where(x => x.Response.Result == 2);
答案 1 :(得分: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
都是惰性的(一旦确定结果,只返回一个元素并结束执行),两种方法的性能应该相似。