2016-06-18 3 views
-3

Bool 값을 반환하는 LINQ 쿼리를 작성하는 방법? 두 조건이 충족 될 경우Bool 값을 반환하는 컴파일 된 LINQ 쿼리?

내 코드까지,

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를 돌려줍니다.

내가 시도한 다른 코드 중 하나가 게시물을 혼란스럽게 할 것입니다.

연구 링크,

Compiling query with IQueryable return value

  • Linq query return true or false
  • 플러스 난에서 참조하고 책 Pro C# 5.0 and the .NET 4.5 Framework (Expert's Voice in .NET) 있습니다.

  • +0

    여기서 실제로 무엇을 묻고 있습니까? 첫 번째 LINQ 쿼리는 컴파일 된 쿼리가 bool 값을 반환하도록하기 위해 "더 나은"/ 더 관용적 인 – ChrisF

    +0

    @ChrisF입니까? – KyloRen

    +1

    당신도 얻고있는 오류/예외를 포함하는 것이 도움이 될 것입니다, 또는 그 쿼리가 현재 작동한다면, 어떤 결과를 얻고 있으며 어떤 결과가 실제로 원하는 것입니까? –

    답변

    6

    문제는 함수 정의에 있습니다

    public static Func<DatabaseDataContext, DateTime, int, Staff_Time_TBL> 
    

    MSDN page on compiled queries에 따르면이 입력 매개 변수로 DateTimeint 걸릴 것 그 결과로 Staff_Time_TBL을 반환합니다.

    public static Func<DatabaseDataContext, DateTime, int, bool> 
    

    그런 다음 쿼리에서 나는 그것이를 제공하기 위해 더 관용적의 같은 조건 걸리는 Any을 사용하십시오 : 당신이 마지막에 bool이 필요하므로

    마지막 유형은 반환 유형 최종 결과 :

    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)); 
    } 
    

    이렇게하면 원하는 답변을 얻을 수 있습니다.

    +0

    그래서 나는 그 모든 것을 끝내야 만 마지막에 'bool'을 놓쳤다 고 말했습니다. 답변을위한 힙을 보내 주셔서 감사합니다. 시도에서 투표를 올리면 나는 해결 된 해답을 표시 할 것이다. – KyloRen

    관련 문제