0

在第一个查询中,我查询一个 ID 的步骤列表。在下一个查询中,我检查该查询是否包含来自新查询和 C_S_Is_Button 的 ID。但我在下面得到这个错误。我在这个网站上看到过类似的问题,但我还没有弄清楚如何解决我的问题。

错误:

无法从用法中推断方法“System.Linq.Enumerable.Contains(System.Collections.Generic.IEnumerable, TSource)”的类型参数。尝试明确指定类型参数。

第一次查询

var QcheckA = from csd in l.LCSDatas
                join cls in l.LCSteps on csd.C_S_ID equals cls.C_S_ID
                join cde in lol.LCDefinitions on csd.C_S_ID equals cde.C_S_ID
                where csd.A_ID == _AID && cde.C_ID == data.C_ID
                select new 
                {
                    csd.C_S_ID
                };     

C 步骤。查找未单击按钮的最低步骤。

var QSID = (from cd in l.LCDefinitions
               join cs in l.LCSteps on cd.C_S_ID equals cs.C_S_ID                           
               where cs.C_S_Is_Button == true
                  && cd.C_ID == data.C_ID                              
                  && !QcheckA.Contains(cd.C_S_ID) //Error Here
               orderby cd.C_S_Order ascending
               select new
               {
                   cd.C_S_ID
               }).Take(1);

var SID = QSID.SingleOrDefault();

对这种情况有什么建议吗?谢谢

4

1 回答 1

2

您在第一个查询中创建了一个匿名类型,然后在第二个查询中您试图将匿名类类型与基本类型(如 anint或 a )进行比较Guid

在您的第一个查询中尝试更明确(将其转换为确切的类型,我假设int但您可能正在使用 a Guid):

select new  
{ 
    ID = (int)csd.C_S_ID 
};     

然后,在您的第二个查询中,创建另一个匿名类型,就像第一个明确说明它包含的属性类型一样:

&& !QcheckA.Contains(new { ID = (int)cd.C_S_ID} ) 
于 2012-06-18T23:09:18.867 回答