如何编写LINQ查询以返回Bool
值?
我的代码到目前为止,
public class AddNewRow
{
public static Func<DatabaseDataContext, DateTime, int, Staff_Time_TBL>
GetNewRowMissingData =
CompiledQuery.Compile((DatabaseDataContext db, DateTime dDate, int staffNo) =>
db.Staff_Time_TBLs.Any(a => a.Date_Data == dDate && a.Staff_No == staffNo));
}
并试过这个,
public class AddNewRow
{
public static Func<DatabaseDataContext, DateTime, int, Staff_Time_TBL>
GetNewRowMissingData =
CompiledQuery.Compile((DatabaseDataContext db, DateTime dDate, int staffNo) =>
db.Staff_Time_TBLs.Where(a => a.Date_Data == dDate && a.Staff_No == staffNo).Any());
}
因此,如果满足两个条件,则返回true。
我尝试过的任何其他代码都会让帖子变得杂乱无章。
研究链接,
另外,我有一本我引用的书Pro C# 5.0 and the .NET 4.5 Framework (Expert's Voice in .NET)。
答案 0 :(得分:6)
问题在于你的函数定义:
public static Func<DatabaseDataContext, DateTime, int, Staff_Time_TBL>
根据MSDN page on compiled queries,这会将DateTime
和int
作为输入参数,并返回Staff_Time_TBL
作为结果。
最后一种类型是返回类型,因此您最后需要bool
:
public static Func<DatabaseDataContext, DateTime, int, bool>
然后在你的查询中,我会使用带有谓词的Any
,因为它更具惯用性,无法给出最终结果:
public class AddNewRow
{
public static Func<DatabaseDataContext, DateTime, int, bool>
GetNewRowMissingData =
CompiledQuery.Compile((DatabaseDataContext db, DateTime dDate, int staffNo) =>
db.Staff_Time_TBLs.Any(a => a.Date_Data == dDate && a.Staff_No == staffNo));
}
这应该会给你你想要的答案。