编译后的LINQ查询返回Bool值?

Kyl*_*Ren -3 c# linq

如何编写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的专家语音)这本书.

Chr*_*isF 6

问题出在你的函数定义中:

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)

这应该会给你你想要的答案.