在第一个查询中,我查询ID的步骤列表。在下一个查询中,我检查该查询是否包含来自新Query和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();
有关这种情况的任何建议吗?感谢
答案 0 :(得分:2)
您正在第一个查询中创建匿名类型,然后在第二个查询中,您尝试将匿名类类型与基本类型(如int
或Guid
)进行比较。
在您的第一个查询中尝试更明确(将其强制转换为确切类型,我假设int
但您可能正在使用Guid
):
select new
{
ID = (int)csd.C_S_ID
};
然后,在第二个查询中,创建另一个匿名类型,就像第一个明确表示它包含的属性类型一样:
&& !QcheckA.Contains(new { ID = (int)cd.C_S_ID} )