如何编写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));
}
Run Code Online (Sandbox Code Playgroud)
并试过这个,
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());
}
Run Code Online (Sandbox Code Playgroud)
因此,如果满足两个条件,则返回true.
我试过的任何其他代码都会让帖子变得杂乱无章.
研究链接,
另外,我有一本Pro C#5.0和.NET 4.5 Framework(.NET的专家语音)这本书.
问题出在你的函数定义中:
public static Func<DatabaseDataContext, DateTime, int, Staff_Time_TBL>
Run Code Online (Sandbox Code Playgroud)
根据编译查询的MSDN页面,这将采用a DateTime
,并int
作为输入参数并返回a Staff_Time_TBL
作为结果.
最后一种类型是返回类型,因此您需要bool
在最后:
public static Func<DatabaseDataContext, DateTime, int, bool>
Run Code Online (Sandbox Code Playgroud)
然后在你的查询中我会使用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));
}
Run Code Online (Sandbox Code Playgroud)
这应该会给你你想要的答案.
归档时间: |
|
查看次数: |
167 次 |
最近记录: |