我不确定“Simplifiying”这个词是否适合这种情况?但是,我在下面有一个Linq Query lile:
result.FIRSTOBJECT
.Select(x => x.SECONDOBJECT
.Select(y => y.THIRDOBJECT
.Where(j => j.Key.Contains("Something"))));
我得到的结果对象就像屏幕截图一样。
我的问题:有没有办法可以让这个结果不被嵌套?
答案 0 :(得分:3)
使用SelectMany
代替
result = result.FIRSTOBJECT
.SelectMany(x => x.SECONDOBJECT
.SelectMany(y => y.THIRDOBJECT
.Where(j => j.Key.Contains("Something"))));
var finalresult = result.FirstOrDefault();
答案 1 :(得分:3)
所以你想要整理序列?然后,您可以使用SelectMany
:
var allMathingThirdObjects = result.FIRSTOBJECT
.SelectMany(x => x.SECONDOBJECT.SelectMany(y => y.THIRDOBJECT))
.Where(j => j.Key.Contains("Something"));
您可以将结果循环到foreach
或创建一个集合(例如allMathingThirdObjects.ToList()
)或选择第一个:
var firstMatchingThird = allMathingThirdObjects.FirstOrDefault(); // null if no match
或将Key
属性选择为单个字符串:
string allMatchingThirdKeys = String.Join(", ", allMathingThirdObjects.Select(j => j.Key));