我不知道“单纯化”这个词在这种情况下是否合适?但是,下面有一个Linq查询文件:
result.FIRSTOBJECT
.Select(x => x.SECONDOBJECT
.Select(y => y.THIRDOBJECT
.Where(j => j.Key.Contains("Something"))));

我得到的结果对象类似于屏幕上的截图。
我的问题:有什么方法可以使这个结果不被嵌套吗?
发布于 2017-01-17 10:21:43
你想把序列压平吗?那么您可以使用SelectMany
var allMathingThirdObjects = result.FIRSTOBJECT
.SelectMany(x => x.SECONDOBJECT.SelectMany(y => y.THIRDOBJECT))
.Where(j => j.Key.Contains("Something"));您可以在foreach中循环结果或创建集合(F.E。使用allMathingThirdObjects.ToList())或选择第一个:
var firstMatchingThird = allMathingThirdObjects.FirstOrDefault(); // null if no match或将Key属性选择到单个字符串中:
string allMatchingThirdKeys = String.Join(", ", allMathingThirdObjects.Select(j => j.Key));发布于 2017-01-17 10:21:29
使用SelectMany代替
result = result.FIRSTOBJECT
.SelectMany(x => x.SECONDOBJECT
.SelectMany(y => y.THIRDOBJECT
.Where(j => j.Key.Contains("Something"))));
var finalresult = result.FirstOrDefault();https://stackoverflow.com/questions/41694462
复制相似问题