【发布时间】:2020-07-07 14:25:57
【问题描述】:
使用这些简单的类:
public class Object
{
List<Sheet> Sheets { get; set; }
}
public class Sheet
{
List<Line> Lines { get; set; }
}
public class Line
{
int LineId { get; set; }
}
我正在尝试构建一个 LINQ 查询,以查找具有相应 lineId 的 单张工作表。在这种情况下,lineId 对于一张纸来说是唯一的。也就是说,一个工作表可以有多行,但没有两个工作表可以共享相同的行。
基本的foreach 代码看起来像这样,给定一个对象:
Sheet targetSheet = null;
foreach (var sh in Sheet)
{
foreach (var l in sh.Lines)
{
if (l.Id == command.LineId)
{
targetSheet = sh;
break;
}
}
}
我(失败的)尝试使用 Lambda 表达式进行 LINQ 查询:
Sheet targetSheet = Sheets.SingleOrDefault(s => s.Lines.Where(line => line.Id == command.LineId));
谁能帮我看看这个 lambda 表达式缺少什么?
【问题讨论】:
-
@PavelAnikhouski。是的,第一个链接有一个非常明确的答案,包括我对单身的要求。谢谢!