我的代码有什么问题吗? 收到错误“无法将 lambda 表达式转换为“bool”类型,因为它不是委托(delegate)类型”和“无法将查询表达式转换为预期的委托(delegate)类型,因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型”
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;
}
最佳答案
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
是否大于或等于今天的开始时间且小于 future 两天的开始时间。这就是上面代码的作用(通过使用 AddDays
)。
此外,根据您今天
的使用方式,您可能希望考虑更改:
string today = DateTime.Today.ToString("yyyy/MM/dd");
至:
var today = DateTime.Today;
因为最好直接处理 DateTime
。
关于c# - 无法将 lambda 表达式转换为类型 'bool',因为它不是委托(delegate)类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47247769/