【发布时间】:2018-12-19 23:21:11
【问题描述】:
我是 Linq 和 Lambda 的新手。今天我自己走进了它。我有使用 Sql 的经验。所以在通过这个论坛之后遇到了 LinqPad 并以某种方式设法在 Linq 中编写了我的 Sql 查询。当我在 Visual Studio 中编写此 Linq 代码时,它工作正常,没有任何错误。但要求是我需要用 Lambda 编写它。所以我尝试使用 LinqPad 对其进行转换,但它给出了以下错误
在 VS 中工作的 Linq 代码
public async Task<int> GetTotalStudentsAsync(int deanId, DateTime fromDate, DateTime toDate)
{
var result = from userBarSession in _unitOfWork.Read<UserBarSession>()
join deansStudent in _unitOfWork.Read<DeansStudent>() on userBarSession.Id equals deansStudent.UserBarSessionId
where deansStudent.DeanId == deanId && userBarSession.StartDate == fromDate && userBarSession.EndDate == toDate
select new
{
UserID = userBarSession.UserId
};
return result.ToList().Count();
}
LinqPad 中的错误
红色的“deanId”将错误显示为“当前上下文中不存在名称 deanId”
“UserBarSessionId”红色显示错误为“DeansStudents 不包含 UserBarSessionId 的定义,并且没有扩展方法 UserBarSessionId可以找到接受“DeansStudents”类型的第一个参数”
public class DeansStudent
{
[Key]
public int DeanId { get; set; }
[Key]
public int UserBarSessionId { get; set; }
public virtual User User { get; set; }
public virtual UserBarSession UserBarSession { get; set; }
}
【问题讨论】:
-
发布
DeansStudents类的快照和声明deanId的代码段 -
public class DeansStudent { [Key] public int DeanId { get; set; } [Key] public int UserBarSessionId { get; set; } public virtual User User { get; set; } public virtual UserBarSession UserBarSession { get; set; } } -
@Sumitraj deanId 被声明为参数
-
如果您让 LinqPad 自己构建数据上下文,您应该检查它创建了哪些字段以及它们的拼写方式。
标签: c# sql linq lambda linqpad