2016-08-01 23 views
0

让我们有一个十进制数组BOOK_NO[]。我有现有的查询是这样的:如何检查十进制数组中的任何值是否存在于表的十进制字段中?

PrintOrderList = (
    from t1 in db.DIS_SET_PRINT_REQ 
    join t2 in db.RND_BOOK on t1.F_BOOK_NO equals t2.BOOK_NO into first_joined 
    where (t1.IS_EXIST == 1 && 
     t1.F_COMPANY_NO == Company_No && 
     @book_no.(t1.F_BOOK_NO)) 
    from dept_data in first_joined.DefaultIfEmpty() 
    select new DIS_SET_PRINT_REQ_R_SINGLE_MODEL 
    { 
     BOOK_NO = dept_data.BOOK_NO, 
     BOOK_NAME = dept_data.BOOK_NAME, 
     EDITION_NAME = dept_data.RND_SET_BOOK_EDITION.BOOK_EDITION_NAME, 
     FISCAL_YEAR = t1.SNS_SET_FISCAL_YEAR.FISCAL_YEAR_NAME, 
     ACADEMIC_LEVEL = dept_data.RND_SET_BOOK_ACA_LEVEL.BOOK_ACA_LEVEL_NAME, 
     PRINT_QUANTITY = t1.BOOK_QTY, 
     PRINT_REQ_NO = t1.PRINT_REQ_NO, 
     PRINT_SEQ = (db.DIS_SET_PRINT_REQ_DTL.Where(x => x.F_PRINT_REQ_NO == t1.PRINT_REQ_NO) 
              .Where(x => x.IS_EXIST == 1) 
              .OrderBy(x => x.PRINT_REQ_DTL_NO)), 
     FISCAL_YEAR_NO = t1.F_FISCAL_YEAR_NO, 
     EDITION_NO = t1.RND_BOOK.F_BOOK_EDITION_NO, 
     ACADEMIC_LEVEL_NO = dept_data.RND_SET_BOOK_ACA_LEVEL.BOOK_ACA_LEVEL_NO, 
     CATEGORY_NO = dept_data.F_BOOK_CATEGORY_NO 
    }).ToList(); 

在这里,我需要把一个条件,BOOK_NO[]包含任何t1.F_BOOK_NO

+0

问题目前尚不清楚。你想确保每个项目't1'存在于'BOOK_NO []'?这意味着'PrintOrderList'中的所有记录都是在'BOOK_NO []'中有匹配项的记录? –

+0

是的,你知道了。 –

回答

1

使用.ContainsBOOK_NO[]来检查t1.BOOK_NO是它

PrintOrderList = (
    from t1 in db.DIS_SET_PRINT_REQ 
    join t2 in db.RND_BOOK on t1.F_BOOK_NO equals t2.BOOK_NO into first_joined 
    where t1.IS_EXIST == 1 && 
     t1.F_COMPANY_NO == Company_No && 
     book_no.Contains(t1.F_BOOK_NO) 
    from dept_data in first_joined.DefaultIfEmpty() 
    select new DIS_SET_PRINT_REQ_R_SINGLE_MODEL 
    { 
     BOOK_NO = dept_data.BOOK_NO, 
     BOOK_NAME = dept_data.BOOK_NAME, 
     EDITION_NAME = dept_data.RND_SET_BOOK_EDITION.BOOK_EDITION_NAME, 
     FISCAL_YEAR = t1.SNS_SET_FISCAL_YEAR.FISCAL_YEAR_NAME, 
     ACADEMIC_LEVEL = dept_data.RND_SET_BOOK_ACA_LEVEL.BOOK_ACA_LEVEL_NAME, 
     PRINT_QUANTITY = t1.BOOK_QTY, 
     PRINT_REQ_NO = t1.PRINT_REQ_NO, 
     PRINT_SEQ = (db.DIS_SET_PRINT_REQ_DTL.Where(x => x.F_PRINT_REQ_NO == t1.PRINT_REQ_NO) 
              .Where(x => x.IS_EXIST == 1) 
              .OrderBy(x => x.PRINT_REQ_DTL_NO)), 
     FISCAL_YEAR_NO = t1.F_FISCAL_YEAR_NO, 
     EDITION_NO = t1.RND_BOOK.F_BOOK_EDITION_NO, 
     ACADEMIC_LEVEL_NO = dept_data.RND_SET_BOOK_ACA_LEVEL.BOOK_ACA_LEVEL_NO, 
     CATEGORY_NO = dept_data.F_BOOK_CATEGORY_NO 
    }).ToList(); 
+0

感谢您的回复,但“包含”仅适用于字符串匹配。 –

+0

否:)包含的是Enumerable的扩展方法,可用于任何由“默认相等比较器”的TSource - 因此也适用于Decimal –

+0

@AkhterAlaminFarhan - 有帮助吗? –

相关问题