【发布时间】:2021-07-19 17:12:12
【问题描述】:
我有一个 LINQ 查询,我试图将一个方法传递给它,然后将结果返回给 select 语句。
没有抛出错误,但 UpdatedYesterday 不包含任何内容,即使 GetUpdatedValue(int r) 返回 yes or no。有没有办法在select语句中获取返回值?
例如
var result = (from r in reportOne
join l in logs on r.id equals l.id into g
select new TestReport
{
UserID = r.UserID,
UpdatedDate = r.UpdatedDate,
UpdatedYesterday = g.Where(x => x.LogDate == r.WorkDate)
.Select(x => GetUpdatedValue(x.updatedYesterday)).FirstOrDefault()
}).ToList();
public string GetUpdatedValue(int r)
{
var value = r > 0 ? "Yes" : "No";
return value;
}
【问题讨论】:
-
你确定
LogDate和WorkDate完全一样吗?甚至排在第二位?我建议删除这个Where(x => x.LogDate == r.WorkDate)并测试它。 -
没有更多的上下文,除了推测之外,真的不可能做任何事情。 minimal reproducible example 将使我们更容易为您提供帮助。 (而且我怀疑这需要加入......)
-
在 GetUpdatedValue 之后执行,因为它无论如何都无法转换为 sql ...假设你不尝试这样做,那么还要确保 updatedYesterday 不能为空
-
@Seabizkit: 如果是 Linq-To-Sql/Entities 他会得到一个错误
-
你能发布reportOne和日志类吗?
标签: c# entity-framework linq .net-core entity-framework-core