首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Linq简化为对象结果

将Linq简化为对象结果
EN

Stack Overflow用户
提问于 2017-01-17 10:18:11
回答 2查看 123关注 0票数 0

我不知道“单纯化”这个词在这种情况下是否合适?但是,下面有一个Linq查询文件:

代码语言:javascript
复制
result.FIRSTOBJECT
   .Select(x => x.SECONDOBJECT
       .Select(y => y.THIRDOBJECT
           .Where(j => j.Key.Contains("Something"))));

我得到的结果对象类似于屏幕上的截图。

我的问题:有什么方法可以使这个结果不被嵌套吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-17 10:21:43

你想把序列压平吗?那么您可以使用SelectMany

代码语言:javascript
复制
var allMathingThirdObjects = result.FIRSTOBJECT
    .SelectMany(x => x.SECONDOBJECT.SelectMany(y => y.THIRDOBJECT))
    .Where(j => j.Key.Contains("Something"));

您可以在foreach中循环结果或创建集合(F.E。使用allMathingThirdObjects.ToList())或选择第一个:

代码语言:javascript
复制
var firstMatchingThird = allMathingThirdObjects.FirstOrDefault(); // null if no match

或将Key属性选择到单个字符串中:

代码语言:javascript
复制
string allMatchingThirdKeys = String.Join(", ", allMathingThirdObjects.Select(j => j.Key));
票数 3
EN

Stack Overflow用户

发布于 2017-01-17 10:21:29

使用SelectMany代替

代码语言:javascript
复制
result = result.FIRSTOBJECT
.SelectMany(x => x.SECONDOBJECT
   .SelectMany(y => y.THIRDOBJECT
       .Where(j => j.Key.Contains("Something"))));

var finalresult = result.FirstOrDefault();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41694462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档