我的代码有什么问题? 获取错误“无法将lambda表达式转换为类型'bool',因为它不是委托类型”和“无法将查询表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型”< / p>
Public List<Track> FillGridByDrId(DateTime? fromdate, DateTime? todate ,int DoctorId)
{
string today = DateTime.Today.ToString("yyyy/MM/dd");
var clinicid = BranchId;
var track= (from td in db.table join pt in db.table2 on td.dataequals pt.data where (m => Convert.ToDateTime(m.time).Date >= fromdate&& Convert.ToDateTime(m.time).Date <= todate && m.id== id)
select new Appointment_Track
{
data=td.data
}
).ToList();
return track;
}
答案 0 :(得分:2)
where (m => Convert.ToDateTime(m.AppTime).Date >= fromdate
&& Convert.ToDateTime(m.AppTime).Date <= todate && m.ClinicId == clinicid)
也许应该是:
// Straight after var clinicid = CmsHelper.BranchId;
var todatenextday = todate.AddDays(1);
// then replace your non-working code with
where td.AppTime >= fromdate
&& td.AppTime < todatenextday && td.ClinicId == clinicid
您通常希望避免在Entity Framework中使用Convert.ToDateTime
,因为EF不知道如何将其转换为SQL。但是,如果您想要今天或明天的任何DateTime
,那么您需要检查DateTime
是否大于或等于今天的开始和更少而不是未来两天的开始。这就是上面的代码所做的(通过使用AddDays
)。
此外,根据您使用today
的方式,您可能希望考虑更改:
string today = DateTime.Today.ToString("yyyy/MM/dd");
为:
var today = DateTime.Today;
因为最好直接处理DateTime
。