我开始探索Linq to SQL,这次我试图使用'Contains'方法和我有以下代码编写

本文关键字:方法 Contains 代码 to Linq 探索 开始 SQL | 更新日期: 2023-09-27 18:19:19

我得到的错误信息是:

方法"System.Linq. queryable . contains (System.Linq. queryable)"的类型参数。IQueryable, TSource)'不能从用法中推断出来。尝试显式指定类型参数。

当我运行下面的代码时,我得到一个错误消息,说我需要显式地指定方法包含的参数类型。

var result2 = from cltIntake in db.Client_Intakes
              where (from cltElig in db.Client_Eligibility_Referrals
                     where (
                            from cltDoctVerif in db.Doct_Verifications
                            where cltDoctVerif.Verification_Status == "Yes"
                            select cltElig.Asgnd_Caseworker_ID == 6
                            ).Contains(cltElig.Client_Eligibility_ID)
                     select new { client_Eligibility_ID = cltElig.Client_Eligibility_ID }
                    ).Contains(cltIntake.Client_Intake_ID)
                select new
                  {
                      cltInfo.First_Name,
                      cltInfo.Last_Name,
                  };

我看了很多,并试图转换为int类型,因为集合是int类型,如下所示

.Contains<Int32>(cltElig.Client_Eligibility_ID)

但是抛出了一个错误:

实例参数:不能从"System.Linq. net"转换。到System.Linq.IQueryable实例参数:不能从"System.Linq. net"转换。IQueryable'到'System.Linq.IQueryable'

如果有人能给我一个解决这个问题的方法,我真的很感激。问题是我对IQueryable了解不多。谢谢你

我开始探索Linq to SQL,这次我试图使用'Contains'方法和我有以下代码编写

问题是您的选择正在创建一个匿名类型序列,但是您对Contains的调用传递了一个Int

所以除了select new { client_Eligibility_ID = cltElig.Client_Eligibility_ID }还有select cltElig.Client_Eligibility_ID还有select cltElig.Asgnd_Caseworker_ID == 6' which is projecting a boolean. You probably wanted &&cltElig。Asgnd_Caseworker_ID == 6 '

另外,考虑简化查询
var result2 = from cltIntake in db.Client_Intakes
              from cltElig in db.Client_Eligibility_Referrals
              from cltDoctVerif in db.Doct_Verifications
              where cltDoctVerif.Verification_Status == "Yes"
                   && cltElig.Asgnd_Caseworker_ID == 6
                   && cltDoctVerif.Client_Eligibility_ID == 
                          cltElig.Client_Eligibility_ID
                   && cltElig.Client_Eligibility_ID == 
                          cltIntake.Client_Intake_ID
            select new
              {
                  cltInfo.First_Name,
                  cltInfo.Last_Name,
              };