选择对象
问题描述:
是新来的LINQ和Entity Framework这种困惑的细分子项我:选择对象
我在创建通过实体框架我的数据库(一个微小部分的)模型,用三个表两连胜降1:n的关系:文件夹 - > 1:N - >合同 - > 1:N - > “测量” 点
我要寻找一种语法,允许开始我迭代一个文件夹对象,并将其返回到我在文件中找到的字符串(如果存在),并按名称进行比较。我想完全忽视中层合同,只是在所有合同中找到低一级的点。
我可以通过这样的每一份合同迭代做到这一点:
foreach (Contract contract in folder.Contract)
{
Point point = contract.Point.SingleOrDefault(p => p.Pointname == pointname);
if (point != null)
{ ... other code
}
}
我想跳过合同的foreach,但我不能得到正确的语法。我试过这些:
Point point = folder.contract.SelectMany("???").Point.SingleOrDefault(p => p.Pointname == pointname)
Point point = folder.contract.All(c => c.Point.SingleOrDefault(p => p.Pointname == pointname))
两者都无法编译,但是确实有一个简单的方法来做到这一点?
谢谢!
拉尔夫
答
我相信你需要像下面的代码:
Point point = folder.Contract
.SelectMany(c => c.Point)
.SingleOrDefault(p => p.Pointname == pointname)
,但似乎逻辑是那种与大家展示一下,因为你检查是否在每个合同point != null
的不同。
正是我在找的东西。逻辑的变化不是一个问题:我只需要知道在任何地方是否需要该点。 – Ralf 2013-04-09 07:02:05